代码之家  ›  专栏  ›  技术社区  ›  Ken

自杀:Objective-C对象自己调用dealloc方法

  •  1
  • Ken  · 技术社区  · 14 年前

    [self dealloc] 哪里 -dealloc 能像往常一样有秩序地放松吗?主要风险是什么?

    碰巧我有一个特定的例子,一个自定义的timer对象,它扩展了NSObject,并包含一个NSTimer实例和一个NSUInteger,设置为限制计时器触发的次数。当时间到了,对象告诉计时器 -invalidate -解除锁定 方法。由于这是自动的,我们不必担心必须跟踪对象或关键是知道什么时候是释放它的正确时刻。

    更详细的解释请看我的帖子 here .

    2 回复  |  直到 8 年前
        1
  •  8
  •   JeremyP    14 年前

    Objective-C中的对象自杀是一种好的做法吗?也就是说,对于一个要声明[self-dealloc]的对象,where-dealloc允许像往常一样有序地结束?主要风险是什么?

    不。

    这个


    你应该释放自我吗?那是另一回事,但你还是要遵守规则 Memory Management Rules . 如果你已经将retain发送给self,那么在某个时候你需要将release发送给self。在init中有一个例外,如果初始化失败,您必须释放self并返回nil(我猜您可以声明alloc已将retain发送给self)。

        2
  •  9
  •   skorulis    14 年前

    你不应该打电话给-dealloc。而是调用[self release],使引用计数变为0,并让系统调用-dealloc。

    推荐文章