IOS學習 OC記憶體管理

2021-07-11 15:28:12 字數 1593 閱讀 4395

/***************************記憶體管理*******************************/

引用計數器: 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 ...