Cocoa 错误:委托初始化调用的结果必须立即返回或分配给';自我';

Cocoa 错误:委托初始化调用的结果必须立即返回或分配给';自我';,cocoa,xcode4.2,Cocoa,Xcode4.2,这是什么意思?我怎么修理它 代码: 错误: /Users/user/Dropbox/dev/bignerdranch_cocoa/lottery/LotteryEntry.m:15:5:{15:5-15:17}: error: the result of a delegate init call must be immediately returned or assigned to 'self' [4] 您的自我未创建 -(id) init { self = [super init];

这是什么意思?我怎么修理它

代码:

错误:

/Users/user/Dropbox/dev/bignerdranch_cocoa/lottery/LotteryEntry.m:15:5:{15:5-15:17}: error: the result of a delegate init call must be immediately returned or assigned to 'self' [4]

您的
自我
未创建

-(id) init {
  self = [super init];
  if(self != nil) {
    // do init stuff
  }
  return self;
}

谢谢我正在做一本书的教程。。。这个问题是因为这本书的最新版本
xcode
已经过时了还是写错了?听起来这本书有一个typo@ian:对于是否应将
self
赋值给init方法中的值,过去存在分歧。有人说你永远不应该分配自己,也有人说你应该。在大多数情况下,您是否这样做并不重要(即,两个代码示例都可以)。然而,苹果公司建议您这样做,因此警告存在于它的编译器中。@ian:也就是说,这里有一个关于这个问题的大讨论:@mipadi:这不仅仅是一些“建议”。您肯定需要将
init
的结果分配给
self
,因为允许
init
方法释放调用它的对象并返回不同的对象。这本书是《MacOSX的Cocoa编程,第三版》吗?我正在做完全相同的教程,并得到相同的错误,导致我在这里。谢谢你的帮助,史蒂夫。我发现objective-c在java和c#方面比我预期的稍有不同。@wy125除了第6版之外,我不确定这是哪个版本?最近推出了
xcode4
,这让我的工作变得更轻松了。
-(id) init {
  self = [super init];
  if(self != nil) {
    // do init stuff
  }
  return self;
}