Block的深入与浅出

谈到block,我们通常称之为代码块,那么block的本质到底是什么呢?

block的实质上是对象, 一个函数指针, 指向代码块, 以及上下文所需的变量;

函数指针和block的格式对比

函数指针 void(*fun)(int)

block void(^fun)(int)

blcok的书写形式如下:

//无参无返回值

typedef void (^blockWithoutParameterAndValue)();

//无参有返回值

typedef  NSString* (^blockWithValueButParameter)();

//有参无返回值

typedef void (^blockWithParameterButvalue)(NSString *string, float a);

//有参有返回值

typedef NSString *(^blockWithParameterAndvalue)(NSString *string,float b);

block默认都是在栈上创建的, 当block超过作用域, 就会被销毁, 如果要在作用域外使用block, 应copy该block到堆上,

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容