Tha*_*nks 5 iphone memory-management objective-c uikit
目前我正在进入名为"iPhone OS中的内存管理"的冰冷水中.
这是我学到的一条规则:
每次我在我的方法中看到一个alloc时,我都会在方法的底部发布相应的变量.
每次我在我的头文件中创建一个@property(...)表示复制或保留时,我将该变量的释放消息放入dealloc方法.
每次我有IBOutlet,我都会做同样的事情.唯一例外:如果IBOutlet具有类似@property(... assign)的内容,或者换句话说:如果它具有assign关键字.然后我不关心在dealloc方法中释放它.
我觉得还有很多好的规则要知道!记下你的所作所为.让我们一起刮掉它们.也欢迎链接到精彩的描述.
实际上,任何时候初始化一个对象并且方法名称包含“init”时,您都有责任释放它。如果您使用不包含单词“init”的类方法创建一个对象,那么您就不会这样做。
例如:
NSString *person = [NSString stringWithFormat:"My name is %@", name];
Run Code Online (Sandbox Code Playgroud)
不需要释放。但:
Person *person = [[Person alloc] init];
Run Code Online (Sandbox Code Playgroud)
需要发布(正如您在问题中所述)。同样地:
Person *person = [[Person alloc] initWithName:@"Matt"]];
Run Code Online (Sandbox Code Playgroud)
还需要释放。
这是一种约定,而不是语言的规则,但您会发现对于所有 Apple 提供的 API 都是如此。
| 归档时间: |
|
| 查看次数: |
1196 次 |
| 最近记录: |