iOS 对 Block 用 copy 修饰的理解

73 阅读1分钟
  • MRC 模式下,block 默认是存档在栈中的,随时可能被系统回收,进行 copy 操作,就可以将 block 放在堆中,形成互相指引的效果,当然此时需要注意 block 闭环引起的内存泄露问题。如果使用 retain 操作,只会使其引用计数 +1,block 内存还是在栈中,并没有转移到堆上。
  • ARC 模式下,使用 copy 或者 strong,其效果是一样的,编译器自动对 block 进行了 copy 操作。如果用 copy 修饰 block,也是提醒我们:编译器自动对block进行了 copy 操作,不用 copy 修饰也可以,如果使用者在使用之前对其自行 copy 的话,就显得多余而低效。