歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> iOS非ARC內存管理摘要

iOS非ARC內存管理摘要

日期:2017/3/1 10:19:55   编辑:Linux編程

關於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];

給新人配訓時的摘要。

Copyright © Linux教程網 All Rights Reserved