iOS非ARC記憶體管理摘要 實踐型

2021-09-06 15:11:19 字數 1356 閱讀 7127

關於ios記憶體管理。在開發過程中,記憶體管理很重要,我簡單說明一下。

1.正確用法

uiview *v = [[uiview

alloc] init]; //分配後引用計數為1

[self.view

addsubview:v];  //這兒引用計數加1,為2

[v release];  //這兒引用計數為1

最後系統在**self.view的時候,會先**其subview,所以v會被自動**

2.如果v是類的成員變數,寫了如下**,不需要再在類的dealloc方法裡[v 

release];

v = [[uiview

alloc] init];

[self

.view

addsubview:v];

[v release];

如果在dealloc裡呼叫了release,那麼就多release了,會crash.

3.如果v是類的屬性,分兩種情況

a. @property (nonatomic, assign) uiview *v;  這兒是assign, 然後分配記憶體的時候如果是這樣

v = [[uiview

alloc] init];

[self

.view

addsubview:v];

[v release];或是這樣用

v = [[uiview

alloc] init];

[self

.view

addsubview:v];

[v release];  

都不需要在dealloc裡[v 

release];

b.@property(nonatomic, retain) 

uiview

*v; 

或@property(nonatomic, copy) 

uiview

*v;宣告的屬性,那麼這樣分配記憶體

v = [[uiview

alloc] init];

[self

.view

addsubview:v];

[v release

];這樣與a是一樣情況,不需要在dealloc裡釋放。但如果是

self.v = [[uiview

alloc] init];

[self

.view

addsubview:v];

[v release];加了個self,那麼就要在dealloc裡[v release];

iOS記憶體管理 ARC

arc是在編譯的時候插入 來確信讓物件能夠按需要來存在。arc同樣是以引用計數為基礎。你可以選擇在以檔案或者專案為單位不使用arc。但是建議盡量最好使用arc,首先,編譯器為你做記憶體管理往往比你自己要更優秀,其次,arc導致的效率損失在ui面前基本可以忽略不計。arc有以下強制規則 1.你不能顯示...

非ARC模式下記憶體管理總結

如果我們不使用arc來自動管理記憶體,那麼則應該記住以下準則 1.對於臨時物件 a.通過alloc new copy獲得的物件,應該在不再使用時釋放該物件 release b.通過其他任何方法獲得的物件,我們假設該物件的retaincount為1,且被設定為自動釋放物件,因此我們不需要做任何事情 2...

IOS基礎之 十一 記憶體管理 ARC

1.set 方法記憶體管理的相關引數 retain release舊值,retain新值 值適用於oc物件 assign 直接賦值 set方法預設,適用於非oc物件型別,即基本資料型別,也包括列舉和結構體 copy release 舊值,copy 新值 nsstring 2.是否生成set方法 re...