回答

8

沒有具體根據llvm document on ARC

自動引用計數實現用於Objective-C對象和塊自動存儲器管理,從需要釋放程序員顯式插入保持和釋放。它不提供循環收集器;用戶必須明確地管理生命期。

阿可保持對象的指針(或可保持指針)是一個可保持對象指針類型(可保持型)的值。有三種可保留對象指針類型的:

  • 塊指針
  • Objective-C的對象的指針(ID,類,NSFoo *(通過將插入符號(^)聲明符印記到功能型形成的),等)
  • 的typedef標有__attribute __((NSObject的))

其他指針類型,如int *和CFStringRef,不受ARC的語義和 限制。

3

ARC直接釋放僅ObjC對象(不char*void*int* ...)。但ARC仍然調用對象的dealloc方法。因此,如果你有一個ObjC對象,malloc啓動了一些內存並指向一個char *,並且dealloc方法調用free,那麼內存仍然會被正確處理。

對於Core Foundation對象,您仍然需要CFRelease他們。即使免費的橋接CF類型也需要手動撥打CFRelease