IOS 記憶體管理

2021-06-26 21:44:56 字數 1370 閱讀 2059

ios記憶體管理一直是頭疼的問題,有時間做些簡單的筆記

使用assign: 

對基礎資料型別

(nsinteger

,cgfloat)和c

資料型別(

int, float, double, char, 

等等)·

使用copy:對

nsstring·使用

retain

:對其他

nsobject

和其子類

lnonatomic

關鍵字:

atomic

是objc

使用的一種執行緒保護技術,基本上來講,是防止在寫未完成的時候被另外乙個執行緒讀取,造成資料錯誤。而這種機制是耗費系統資源的,所以在

iphone

這種小型裝置上,如果沒有使用多執行緒間的通訊程式設計,那麼

nonatomic

是乙個非常好的選擇。

ios 5 

中對屬性的設定新增了strong 和weak關鍵字來修飾屬性(ios 5 之前不支援arc) l

strong

關鍵字:

strong 

用來修飾強引用的屬性;對應原來的retain。

該屬性值對應__strong 關鍵字,即該屬性所宣告的變數將成為物件的持有者。

lweak

關鍵字:

weak 

用來修飾弱引用的屬性;對應原來的assign。

但是不同的是當物件被釋放以後,物件自動賦值為nil;

並且,delegate 和outlet蘋果推薦用weak 屬性來宣告。同時,如上一回介紹的ios 5 之前的版本是沒有__weak 關鍵字的,所以weak 屬性是不能使用的。這種情況我們使用unsafe_unretained。

為單獨檔案指定是否使用

arc

當你遷移乙個久工程到

arc模式下

,-fobjc-arc

編譯開關被預設的設定在所有的

objective-c 

源**上。

你可以使用-fno-objc-arc

來為特殊的

class

停用arc 

。在xcode

的target

的「build phases」

標籤,開啟

compile sources group

,展開源**列表,

雙擊你想要修改的源**的名字,再彈出框裡輸入-fno-objc-arc,然後點

done

按鈕。 摘自:

ios記憶體管理

引用計數 每個物件有乙個與之相關的整數,稱作 引用計數器 或者 保留計數器 當某段 需要訪問乙個物件時,該段 會將物件的保留計數器 1,表示需要訪問這個物件 當結束對該物件的訪問時,保留計數器 1,表示它不在訪問該物件 當保留計數器為0時,物件被銷毀,所佔記憶體被系統收回。當使用new retain...

iOS記憶體管理

前提 1 以下是針對cocoa物件,不包括core foundation 2 cocoa物件都是用引用計數來跟蹤物件的記憶體使用情況的。3 在子類裡面父類先初始化和後釋放的原則。自己想下為什麼 棧空間和堆空間的區別。我們說的記憶體管理都是基於堆空間的,因為函式內的棧空間是由編譯器自己控制的。關於co...

IOS 記憶體管理

範圍 任何繼承了nsobject的物件,對基本資料型別無效 原理 每個物件內部都儲存了乙個與之相關聯的整數,稱為引用計數器 當使用alloc new或者copy建立乙個物件時,物件的引用計數器被設定為1 給物件傳送一條retain訊息,可以使引用計數器值 1 給物件傳送一條release訊息,可以使...