1、block是一个特殊的oc对象,建立在栈上,而不是堆上,这么做一个是为性能考虑,还有就是方便访问局部变量。

2、默认Block使用到的局部变量会被copy,而不是retain。所以,他无法改变局部变量的值。如果在变量前加上__block那么编译器不会复制变量,而是去找变量的地址,通过地址来访问变量,实际上就是直接操作变量。

3、另外block是在栈上分配的,所以一旦离开作用域,就会释放。因此要把block用在别处时,必须要copy一份。block不能保留,retain没有意义。待续。。。

相关文章:

  • 2021-06-15
  • 2022-12-23
  • 2022-12-23
  • 2021-09-16
  • 2021-05-20
  • 2021-09-30
  • 2022-12-23
  • 2021-06-28
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-20
  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
相关资源
相似解决方案