關於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];
給新人配訓時的摘要。