我目前正在查看由功能CFSetCreateMutable()
創建的NSMutableSet
。該文件指出CFSetCreateMutable()
的返回值是免費橋接的,這意味着我可以簡單地將它投入NSMutableSet
。這是否意味着發送release
消息是完全有效的?我總是可以安全地假設,我總是可以將這些物體當作是通過NS級來編輯的呢?免費橋接對象,保留並釋放
1
A
回答
7
想象一下,CFSetCreateMutable()
等同於[[NSMutableSet alloc] init],因爲您必須在完成對象後釋放對象。如果您正在使用ARC,則可以使用橋接轉換將CFMutableSet轉換爲NSMutableSet:(__bridge_transfer NSMutableSet *)theCFSet
。這將告訴ARC,它在超出範圍之後負責釋放該集合。
1
該文檔指出CFSetCreateMutable()的返回值是免費橋接的,這意味着我可以簡單地將其轉換爲NSMutableSet。這是否意味着發送釋放消息是完全有效的?
是的。 This is explicitly guaranteed in the docs:從例子中的內存管理功能和方法也
注互換,你可以使用
CFRelease
與可可對象和release
和autorelease
了Core Foundation對象。
我總是安全的假設,我總是可以把這樣的對象,好像他們是通過NS-類alloc'ed?
不是真的:目前,任何存在於CFType和NSObject的之間常見的,如-description
/CFCopyDescription
,無論工作如何創建對象的,但他們並不是所有的明確保障類的工作內存管理消息。
相關問題
- 1. 免費橋接陷阱
- 2. 免費橋接Mono Touch
- 3. 非保留對象:何時被釋放?
- 4. 保留並釋放混淆?
- 5. 使用免費刪除對象釋放內部對象
- 6. 保留對象並將其釋放給委託人
- 7. 免費橋接和內存管理
- 8. 是否適用支持免費橋接?
- 9. CFDictionaryValueCallBacks保留/釋放?
- 10. 釋放和保留
- 11. 併發訪問,並免費堆對象
- 12. 正確地釋放並保留NSString *
- 13. 釋放接口對象
- 14. 保留/釋放錯誤
- 15. 餘額保留與釋放?
- 16. 我釋放分配或保留的對象多少次?
- 17. 屬性可以保留一個自動釋放的對象?
- 18. 我是否需要保留自動釋放對象?
- 19. 如何釋放類對象被手動保留
- 20. 核心基礎對象和保留/釋放消息
- 21. NSArray:釋放它的對象,但保留一個指針
- 22. 由於保留計數而釋放對象
- 23. 將自動釋放對象分配給保留屬性
- 24. 何時釋放/保留傳遞給輔助線程的對象?
- 25. 如何釋放保留對象的內存
- 26. 「試圖保留釋放對象」的循環引用
- 27. 免費cv ::墊沒有釋放內存
- 28. 釋放分配的對象(方法保留具有+1保留計數的objective-c對象)
- 29. 我如何檢查對象計數並根據它的保留計數來釋放該對象?
- 30. UIAlertView並顯示它後釋放對象
那麼基本上免費電橋意味着「等同於所有意圖和目的」?太好了!可悲的是,我不能使用ARC,因爲我需要部署到iOS 4.噢,如果要做內存管理方面的努力,至少我會更深入地瞭解它(這並不是說我真的很想念RAII C++!) – 2011-12-31 21:46:39