jpm*_*jpm 3 iphone cocoa-touch objective-c
我看过周围的示例源代码使用不同的方式释放/解除对象,所以我想知道哪种方式被认为是"最好的".一些选项-dealloc:
1)释放对象
- (void)dealloc {
[obj1 release];
[obj2 release];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
2)将对象设置为nil
- (void)dealloc {
self.obj1 = nil;
self.obj2 = nil;
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
3)直接取消分配对象
- (void)dealloc {
[obj1 dealloc];
[obj2 dealloc];
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
哪种方式最好?每个人的利弊?
方法1是唯一推荐的方法.在你释放它们之后将它们设置为nil也是一种好习惯.
方法2仅适用于管理自己的对象/值保留的属性,因此它不是普遍适用的.如果您实现自己的setter方法,该方法在属性更改时执行其他操作,则可以通过在[dealloc]中调用它来获得不需要的副作用.
方法3违反了引用计数原则,因为它会释放对象,即使其他对象有[retain]保留,所以当其他对象接下来访问它们时,程序将崩溃.你永远不应该直接调用[dealloc] - 让运行时在最后一个所有者调用[release]时调用它.
| 归档时间: |
|
| 查看次数: |
2589 次 |
| 最近记录: |