關於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...