iOS記憶體管理機制

2022-03-03 08:22:50 字數 935 閱讀 9724

todo:

cf和oc之間的轉換)

core foundation框架和cocoa foundation框架區別

core foundation框架和foundation框架緊密相關,它們為相同功能提供介面,但foundation框架提供objective-c介面。如果您將foundation物件和core foundation型別摻雜使用,則可利用兩個框架之間的 「toll-free bridging」。所謂的toll-free bridging是說您可以在某個框架的方法或函式同時使用core foundatio和foundation 框架中的某些型別。很多資料型別支援這一特性,其中包括群體和字串資料型別。每個框架的類和型別描述都會對某個物件是否為 toll-free bridged,應和什麼物件橋接進行說明。

objective-c指標與corefoundation指標之間的轉換】

arc僅管理objective-c指標(retain、release、autorelease),不管理corefoundation指標,cf指標由人工管理,手動的cfretain和cfrelease來管理,注,cf中沒有autorelease。

cocoafoundation指標與corefoundation指標轉換,需要考慮的是所指向物件所有權的歸屬。arc提供了3個修飾符來管理。

1. __bridge,什麼也不做,僅僅是轉換。此種情況下:

i). 從cocoa轉換到core,需要人工cfretain,否則,cocoa指標釋放後, 傳出去的指標則無效。

ii). 從core轉換到cocoa,需要人工cfrelease,否則,cocoa指標釋放後,物件引用計數仍為1,不會被銷毀。

2. __bridge_retained,轉換後自動呼叫cfretain,即幫助自動解決上述i的情形。

2. __bridge_transfer,轉換後自動呼叫cfrelease,即幫助自動解決上述ii的情形。

iOS 記憶體管理機制

學習要點 1.reference counting 引用計數機制 2.了解mrc apc和gc 3.autoreleasepool 執行機制 4.如何避免 retain cycle reference counting 引用計數機制 cocoa 上基本的記憶體管理機制就是引用計數,通過乙個 refe...

iOS 記憶體管理機制

alloc 與 init 理解 myclass myobj myclass alloc init myclass myobj myclass alloc myobj myobj init alloc 分配了記憶體給物件,讓他不釋放,並且把位址返回給指標。但是這塊記憶體不能使用,因為沒有被正確的 初始...

談談 iOS 記憶體管理機制

從最簡單的 c 語言開始說起,c 語言中申請 malloc 到了一塊記憶體,你可以把這塊記憶體想象成乙個小球,你有根線牽著它,這根線就是指標,並且規定只有通過線才能拿到小球,乙個小球可以被很多人用線牽著.c 語言中釋放記憶體,就相當於把小球直接銷毀,但可能還有其他人用線牽著這個小球啊,當你釋放之後,...