超级初始化不再有效

时间:2012-01-20 12:35:53

标签: objective-c automatic-ref-counting

在我的一个课程中,我有一个-(id) init方法。在该方法中发生的第一件事是调用[super init]

这一切都很好,但我最近将我的代码导入到一个新的xcode项目中。我在这一行收到错误:

错误:自动引用计数问题:委托init调用的结果必须立即返回或分配给“self”

为什么会出现此错误?是因为这是在ARC系统下折旧的吗?或其他什么?

3 个答案:

答案 0 :(得分:3)

你是如何使用旧系统的?您希望(在两个版本上)都可以

self = [super init];

if (self) ...

return self;

答案 1 :(得分:1)

它之前适用于您,因为LLVM比之前的GCC严格得多。海湾合作委员会没有发现错误,正如@vakio在他的评论中所指出的那样,它起作用的原因是链中某处,self = [super init]存在。 LLVM在编译期间检测到此错误,并阻止您编译错误的代码。

答案 2 :(得分:0)

这对我有用:

需要在自己中分配一些东西。

-(id) init {
   self = [super init];
   return self;
}