SK9*_*SK9 1 objective-c self-destruction nstimer dealloc
Objective-C中的对象自杀是一种好习惯吗?也就是说,对象要声明[self dealloc]哪里-dealloc允许像往常一样有序地降温?主要风险是什么?
碰巧我有一个特定的例子,一个自定义计时器对象,它扩展NSObject并包含一个NSTimer实例和一个NSUInteger,它被设置为限制计时器触发的次数.当时间到了,对象告诉计时器-invalidate,然后通过调用它的-dealloc方法自杀.由于这是自动的,我们不必担心必须跟踪对象或关键地知道何时是解除分配它的正确时刻.
如需更详细的说明,请参见我的文章在这里.
Objective-C中的对象自杀是一种好习惯吗?也就是说,对于一个声明[self dealloc]的对象,其中-dealloc允许像往常一样有序地降温?主要风险是什么?
没有.
你应该编写对dealloc的调用的唯一一次是将dealloc发送到你的一个类的dealloc方法中的超级对象.没有例外.
如果您尝试在任何其他时间将dealloc发送到对象,则可能会使其他对象留下悬空指针.不要这样做.
你应该向自己发送释放吗?这是另一回事,但您仍应遵循内存管理规则.如果您已将保留发送给自己,那么在某些时候您需要向自己发送保留.在init中有一个例外,如果初始化失败,你必须释放self并返回nil(我猜你可以声称alloc已经发送了retain to self).
| 归档时间: |
|
| 查看次数: |
824 次 |
| 最近记录: |