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訊息,可以使...