学科:IOS/KB/内存管理

来自维基学院

现在你应该总是使用ARC了。

部分要点[编辑 | 编辑源代码]

  • weak 只在 iOS 5 以上设备上支持;
  • block 中直接访问 iVar 会 retain iVar 的所有者
  • 使用 weakref 打破 block 循环引用,可能还需要在 block 中再使用 strongref 保证引用对象在 block 执行期间可用

OC 与 CF 对象间所有权转换要点:

  • __bridge,没变化;
  • __bridge_transfer,CF 移交给 OC;
  • __bridge_retained,OC 移交给 CF,别忘了有可能需要你自己去 CFRelease。

与旧代码共存[编辑 | 编辑源代码]

在一个开启ARC的项目中,使用旧式内存管理源代码可能不能通过编译,可以对相关文件加上 -fno-objc-arc 编译开关。

参考[编辑 | 编辑源代码]