2016-01-08 43 views
1

我是Swift的新手,想知道是否有人能幫助確認我對Apple Swift中釋放對象的理解?在Swift中發佈對象

CGPathCreateWithRect()文檔描述here狀態返回值是

「一個新的,一成不變的路徑。你是負責釋放此 對象。」

什麼時候說「你是負責任的」就像說你不再持有引用時那麼簡單,垃圾收集器會刪除這個對象?即你負責管理參考資料?在這種情況下 - 並不明顯?如果沒有 - 這是什麼意思?

感謝

拜倫

+0

斯威夫特沒有垃圾收集器。閱讀以瞭解其工作原理:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID48 –

回答

4

使用Objective-C

只有當從Swift documentation

內存管理對象

核心基礎,從註釋的API返回的對象你是負責自動在 內存管理Swift - 你不需要調用CFRetain, CFRelease或CFAutorelease函數愛上你自己。

+0

謝謝Vadian。經過一堆閱讀和一些測試,這似乎是這種情況。 – Bryon

1

沒有垃圾收集iOS中。請參閱memory management上的蘋果文檔和ARC的概念,以更好地理解該評論和此處的範式轉變。

另外,在Swift中你不需要使用它。您可以創建一個實際對象,並將包含的CGPathRef傳遞給可能需要它的任何低級函數。

0

您應該確實查看WWDC 2011的ARC視頻。它們可在開發者網站上找到並通過iTunes打開。尤其是:

•會話323 - 引入自動引用計數

•會話322 - Objective-C的進步在深度

此外,ARC參考筆記:
http://developer.apple.com/library/ios/#releasenotes/ObjectiveC/RN-TransitioningToARC/_index.html

參考筆記和視頻都討論了Core Graphics(等)以及他們如何與ARC一起工作。

具體來說,看所謂的「管理免費電話橋接」

在很多Cocoa應用程序的部分,你需要使用Core Foundation的風格 的對象,無論是從核心基礎框架本身(如 CFArrayRef或CFMutableDictionaryRef)或採用 核心基金會約定(如Core Graphics(您可能使用 類型,如CGColorSpaceRef和CGGradientRef))的框架。

編譯器不會自動管理Core的基線對象的生命週期;您必須調用CFRetain和CFRelease(或 對應的特定於類型的變體),這由Core基金會內存管理規則(請參閱內存管理編程指南 指南)規定。

如果Objective-C和核心基礎風格的對象之間投射,您 需要告知使用一個投對象 的所有權語義的編譯器(在objc/runtime.h所定義)或核心 基礎風格的宏(在NSObject.h中定義):[...]