这两个dealloc方法有什么区别吗?

3

因为该对象是由另一个对象组成的复合对象,所以我正在重写dealloc方法。

我最初有这个dealloc方法:

-(id) dealloc; // Override to release the Rectangle object’s memory 
{
    [rect release];
    [super dealloc];
    return self;
}

在查看了书籍后,我发现另一个答案:

{
   [rect release];
   return [super dealloc];
}

想知道两者是否同样有效。

谢谢,

Nick


现在我用梯度法实际运行程序后,它告诉我我没有像应该一样忽略最后一行的空值。 - nickthedude
2个回答

10
他们两个都错了。 dealloc 返回的是 void,而不是 id
- (void) dealloc {
  [rect release];
  [super dealloc];
}

0

我刚刚检查了NSObject reference: dealloc没有返回类型。因此,我认为定义这样的签名是不正确的。因此,对dealloc的调用不应该期望返回值。

除非您不是NSObject的子类...


1
即使你正在对NSObject进行子类化,-dealloc绝对不应该返回一个值(因为Objective-C不支持协变类型)。 - bbum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接