Block-copy

  int age = 10;
void (^block1)(void)=^{
            NSLog(@"%i", age);

        };

这种block默认是在栈内存上面,一旦我们调用了copy他就会复制一份到堆内存中,如果需要释放block需要我们手动执行release。

在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);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容