標籤:objective-c ios ios開發
本書第十六章講解的時關於檔案和目錄的操作,內容相對簡單,再次略過。
第十七章的學習筆記經本人歸納整理呈獻給大家。
記憶體管理:
- 為了被佔用的記憶體能夠再次利用,通過記憶體管理清理不用的記憶體。如果一個對象不再使用,就需要釋放對象佔用的記憶體
Part 1. 基本記憶體管理模型Part 1.1 自動垃圾收集:
- 系統能夠自動賈策對象是否擁有其他的對象,當程式執行需要空間的時候,不再被引用的對象會被自動釋放
Part 1.2 手工管理記憶體計數:
- 每當建立引用到對象的時候需要為引用數+1。
[myFraction retain]
- 不再需要對象時,給對象發送release訊息,為引用數-1。
[myFraction release]
- 當對象的引用計數為0的時候,系統就知道這個對象不再需要使用了。
Part 1.3 自動引用計數(ARC):
- 系統會檢測出何時需要保持對象,何時需要自動釋放對象,何時釋放對象。
Part 2. autoreleasepool塊
for (i = 0; i < n; ++i){ @autoreleasepool{ ...臨時對象... }}
Part 3. 時間迴圈和記憶體配置
- 為了處理新事件,系統會建立一個新的自動釋放池。
- 調用應用中的一些方法來處理這個事件,方法返回後,系統清理自動釋放池。
- 建立的自動釋放對象都被銷毀,除非使用
retain
,才能從清空自動釋放池的過程中倖存下來。
Part 4. 強變數 和 弱變數
強變數:
- 所有對象的指標都是強變數
- 舊對象的引用會在賦值前被釋放。
- 聲明對象:
__strong Fraction *f1
- 聲明屬性:
@property(strong, nonatomic) NSMutableArray *birdNames;
弱變數
- 系統會追蹤這個變數的引用。當引用的對象釋放時,若變數會被設定為
nil
。
- 聲明對象:
__week UIView *parentView;
- 聲明屬性:
@property(week, nonatomic) UIView *parentView;
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
[學習筆記—Objective-C]《Objective-C 程式設計 第6版》第十七章 記憶體管理和自動計數