iOS OC 記憶體管理

2021-09-09 03:33:10 字數 1609 閱讀 5392

3) 自動釋放池的 建立:

4) 自動釋放池的 使用:

5) 自動釋放池的 疑問:

6) 自動釋放池的 注意:

2) 原理:

3) 原則:

4) 析構方法:

5) assign 修飾符:

2) 弱引用 weak:

2) 對部分檔案做修改(混編):

// person.h

+ (instancetype)person;

// person.m

+ (instancetype)person

// viewcontroller.m

// 宣告 assign 物件

@property (nonatomic, assign) person *p;

// alloc/init 初始化方式

/*mrc 中,assign 修飾符號,對物件不做任何操作,只是簡單的記錄位址,物件出了作用域後才會被釋放

*/self.p = [[person alloc] init];

// 類方法初始話方式

/*mrc 中,所有返回 instancetype 的系統類方法,返回的物件都是 autorelease 的

*/self.p = [person person];

// person.h

+ (instancetype)person;

// person.m

+ (instancetype)person

// viewcontroller.m

// 宣告 weak 物件

@property (nonatomic, weak) person *p;

// alloc/init 初始化方式

/*arc 中,如果給 weak 做 alloc/init 的初始話,xcode 會提示,如果物件建立後沒有被其他任何物件強引用,會被立即釋放

*/// 沒有對 alloc 的物件做強引用,會被立即釋放,使用 strong 則不會被立即釋放

self.p = [[person alloc] init];

// 對 alloc 的物件做強引用,不會被立即釋放,出了作用於後會被釋放

nsstring *str = [[[person alloc] init] description];

// 類方法初始話方式

/*對於 xcode 編譯器而言,只要是類方法,就不會提示。結果之所以為 null,是因為 weak 建立後沒有被其他任何物件強引用,

會被立即釋放,跟 autorelease 沒有關係

*/// 沒有對建立的物件做強引用,會被立即釋放,使用 strong 則不會被立即釋放

self.p = [person person];

// 對建立的物件做強引用,不會被立即釋放,出了作用於後會被釋放

nsstring *str = [[person person] description];

解決方法:引入自動釋放池,有兩種解決方案。

提問:那種方式效率高。

iOS OC命名規範

正文 通過讀寫大量 我有自己的一套程式設計思路和習慣,自認為自己的編碼習慣還是不錯的,結構也算清晰,因為我一直以來都是 看的多寫的多,但是總結的比較少,知識經常不成體系。以後多花點時間把自己的經驗和學習知識加以總結一下吧,這樣有利於去指導新人,也更有利於加深自己的知識認知。今天就從 規範入手總結一下...

記憶體管理 記憶體管理概述

儲存器的發展方向是高速 大容量和小體積,即儲存器嘗試更高讀寫速度,更大儲存容量,更小物理體積。在計算機中,常見的儲存器有 暫存器,快取,記憶體,硬碟,一般硬碟之類的輔助儲存器又稱外存。在平均讀寫速度上,有 暫存器 快取 記憶體 外存 在單位容量 上,有 外存 記憶體 快取 暫存器 cpu處理器只能直...

《記憶體管理》 記憶體

1.c c 記憶體分布 我們先來看下面的一段 和相關問題 int globalvar 1 static int staticglobalvar 1 void test char char2 abcd char pchar3 abcd int ptr1 int malloc sizeof int 4 ...