學科: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 編譯開關。

參考[編輯 | 編輯原始碼]