/***************************記憶體管理*******************************/
引用計數器: oc物件被引用的次數,為0的時候該物件被銷毀,記憶體**。
retain() :引用次數+1; 返回的是物件本身
release() : 引用次數—1;沒有返回值
retaincount():獲取引用次數。
dealloc():oc物件被銷毀的時候會呼叫dealloc方法,繼承該
方法(放最後面[super dealloc])並重寫
ios 的main函式是死迴圈 ?
建立物件alloc 給物件分配記憶體空間, 計數器+1;
有alloc就有release,有retain就有release。
野指標:指向殭屍物件(不可用記憶體)的指標。
(exc_bad_access:訪問被**的記憶體錯誤,野指標錯誤。為避免這種錯誤,
在release之後 引用計數器=0的時候, 將物件設為nil)
oc沒有空指標錯誤!!
/*************************多物件記憶體管理**************************/
@property (nonatomic ,retain) book *book ;物件成員變數
oc用retain ,其他用assign(特殊情況 迴圈引用用assign)
1.set方法記憶體管理相關的引數
* retain : release舊值,retain新值(適用於oc物件型別)
* assign : 直接賦值(預設,適用於非oc物件型別)
* copy : release舊值,copy新值
2.是否要生成set方法
* readwrite : 同時生成setter和getter的宣告、實現(預設)
* readonly : 只會生成getter的宣告、實現
3.多執行緒管理
* nonatomic : 效能高 (一般就用這個)
* atomic : 效能低(預設)
4.setter和getter方法的名稱
* setter : 決定了set方法的名稱,一定要有個冒號 :
* getter : 決定了get方法的名稱(一般用在bool型別)
/*************************@class與迴圈引用**************************/
@class car(類名) :告訴編譯器 car是乙個類
使用@class 就不用#import來匯入類。
引用乙個類的規範
1> 在.h檔案中用@class來宣告類
2> 在.m檔案中用#import來包含類的所有東西
迴圈引用: 一段 retain ,一端 assign
/*****************autorelease 與 @autoreleasepool ***************/
@autoreleasepool
//回事池子 並將池子裡的物件release一次。
寫乙個類方法
+ (id) person
+ (id) personwithage:(int) age
ios開發 OC記憶體管理的學習
今天我學習了oc中重點的內容,記憶體管理,由於內容較多,需要慢慢消化,下面是具體學習內容 記憶體管理的學習 1.基本實現方法 1 retain 計數器 1,會返回物件本身 2 release 計數器 1,沒有返回值 3 retaincount 獲取當前的計數器 4 dealloc 當乙個物件要被 的...
iOS 之OC記憶體管理(一)
這個系列打算寫一些我對iphone開發記憶體管理的理解。是建立在讀者對objective c的記憶體管理已經有一定理解的基礎上,內容將包括實踐準則,autorelease原理剖析,記憶體洩露的除錯等。如果您對objective c記憶體管理不太了解,建議先讀一下vince yuan的這個 教程。在進...
iOS學習筆記基礎 oc06記憶體管理
一 記憶體管理基本原理 1 棧存放區域性變數,系統自動 堆存放動態產生的儲存變數,需要手動 2 任何繼承了nsobject的物件都需要進行記憶體管理。3 每個oc物件都有自己的引用計數器,表示物件引用的次數,每個物件內部都有4個位元組儲存空間來儲存引用計數器。4 引用計數器的作用 當使用alloc ...