1,块是C,C++,Objective-C中的词法闭包。
块可以看作c里的函数指针,它将方法当作对象那样进行传递。其实块是一种代替函数指针的语法结构,原来使用函数指针时,需要用“不透明的void指针”来传递状态。而改用块之后,则可以把原来用标准c语言特性所编写的代码封装成简明且易用的接口。
2,块可接收参数,也可返回值。
3,块可以分配在栈或堆上,也可以是全局的。分配在栈上的块可拷贝到堆里,这一的话,就和标准的Objective-C对象一样,具备引用计数了。
定义块的时候,其所占用的内存区域是分配在栈中的。
当使用copy下,就可以把块从栈复制到堆了。
全局的块相当于单例,不会被系统回收。
如:void(block)()={
NSLog(@"block");
};
网友评论