block的变量捕获

为了保证block内部能够正常访问外部的变量,block有个变量捕获机制

block的类型

block有3种类型,可以通过调用class方法或者isa指针查看具体类型,最终都是继承自NSBlock类型

在ARC环境下,编译器会根据情况自动将栈上的block复制到堆上,

比如以下情况 block作为函数返回值时

将block赋值给__strong指针时

block作为Cocoa API中方法名含有usingBlock的方法参数时

block作为GCD API的方法参数时

MRC下block属性的建议写法
@property (copy, nonatomic) void (^block)(void);

ARC下block属性的建议写法
@property (strong, nonatomic) void (^block)(void);
@property (copy, nonatomic) void (^block)(void);
扫描二维码关注公众号,回复: 9346183 查看本文章
发布了96 篇原创文章 · 获赞 10 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/feifeiwuxian/article/details/103618149