記憶體管理總結

2022-05-22 22:03:11 字數 1201 閱讀 3048

一、計數器的基本操作

1> retain : +1

2> release : -1

3> retaincount : 獲得計數器

二、set方法的記憶體管理

1> set方法的實現

}2> dealloc方法的實現(不要直接呼叫dealloc)

三、@property引數

1> oc物件型別

@property (nonatomic, retain) 類名*屬性名;

@property (nonatomic, retain) car *car;

@property (nonatomic, retain) id car;

// 被retain過的屬性,必須在dealloc方法中release屬性

2> 非oc物件型別(int \ float \ enum \ struct)

@property (nonatomic, assign) 型別名稱屬性名;

@property (nonatomic, assign) int age;

四、autorelease

1.系統自帶的方法中,如果不包含alloc、new、copy,那麼這些方法返回的物件都是已經autorelease過的

[nsstring stringwithformat: . . . .];

[nsdate date];

2.開發中經常寫一些類方法快速建立乙個autorelease的物件

arc的判斷準則:只要沒有強指標指向物件,就會釋放物件

1.arc特點

1> 不允許呼叫release、retain、retaincount

2> 允許重寫dealloc,但是不允許呼叫[super dealloc]

3> @property的引數

*  strong : 成員變數是強指標(適用於oc物件型別)

*  weak : 成員變數是弱指標(適用於oc物件型別)

*  assign : 適用於非oc物件型別

4> 以前的retain改為用strong

指標分2種:

1> 強指標:預設情況下,所有的指標都是強指標_strong

2> 弱指標:_weak

當兩端迴圈引用的時候,解決方案:

1>  arc

一端用strong,另一端用weak

2>  非arc

一端用retain,另一端用assign

總結 記憶體管理

上下限暫存器 在cpu中設定上下限暫存器,用於分別存放作業在主存中的上限和下限位址 界位址暫存器 界位址暫存器存有程序的最大邏輯位址,若不越界,加上重定位暫存器 存有程序的起始實體地址 的值即為實體地址 編譯鏈結 裝入固定式分割槽 程式適應分割槽 可變式分割槽 分割槽適應程式 單一佇列分配方式 多佇...

iOS 記憶體管理總結

一 自動釋放池 自動釋放池,任何標記為自動釋放並因此新增到池中的物件,將在池本身被釋放的同時也自動釋放,程式可以有多個自動釋放池,它們還可以是巢狀的。如果程式在執行時將產生大量的臨時物件,就可能需要在程式中建立多重自動釋放池。例如 for inti 0 i 1000000 i 在執行此段 的時候會有...

自動管理記憶體總結

總結 前提條件 物件都是有引用計數且是被強指標指向的 1 mrc,有autoreleasepool的情況下 所有建立出來的新物件都需要被釋放 2 mrc,沒有autoreleasepool的情況下 mrc不自動生成 全手動 所有建立出來的新物件都需要被釋放 3 arc,有autoreleasepoo...