Sta*_*ley 0 iphone cocoa-touch objective-c
在dealloc的实现中,您不应该调用超类的实现.您可以覆盖此方法以处置除对象的实例变量之外的资源,例如:
- (void)dealloc {free(myBigBlockOfMemory); }
上面说我们不应该调用超类的实现.但在它下面说我们应该"通过消息将超级版本的dealloc合并到超级".所以两段之间似乎存在一些冲突.这一定是由于我错过了一些东西.希望有人能解释一下......
如果使用手动引用计数,则子类必须实现它们自己的dealloc版本,以允许释放对象消耗的任何其他内存 - 例如为解除分配的对象拥有的数据或对象实例变量的动态分配存储.在执行特定于类的释放后,子类方法应该通过消息将dealloc的超类版本合并到super:
- (void)dealloc {[companion release]; 自由(myBigBlockOfMemory); [super dealloc]; }
您的第一个引用是针对何时启用自动引用计数(ARC),而第二个引用是针对何时未启用ARC .ARC是SDK 5.0中提供的一项新功能,它消除了程序员需要完成的大量手动内存管理.
请参阅转换到ARC发行说明,特别是这些声明:
如果需要管理除释放实例变量之外的资源,则可以实现dealloc方法.你不必(实际上你不能)发布实例变量......
ARC中的自定义dealloc方法不需要调用[super dealloc](它实际上会导致编译器错误).链接到super是由编译器自动执行的.
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |