美文网首页
Block-copy

Block-copy

作者: 越天高 | 来源:发表于2020-10-24 18:46 被阅读0次
  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);

相关文章

  • Block-copy

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

  • iOS底层原理(9)-block-copy属性,auto变量

    对象类型的auto变量 1.当block内部访问了对象类型的auto变量时如果block是在栈上,将不会对auto...

网友评论

      本文标题:Block-copy

      本文链接:https://www.haomeiwen.com/subject/cfqpmktx.html