当你运行self = [super init]并返回nil时,正确的响应是什么?

时间:2011-08-29 01:05:43

标签: objective-c xcode null

我在may class的实例中运行此代码:

-(id)init {
    self = [super init];
    if (self) {
        // my init code here
    }
    return self;
}

......并且自我回报为零。我知道这是正确的程序,应该这样做。但如果自我回归为零,我的反应应该是什么?抛出程序失败并终止的警报?忽略它 ?或者是否有建议的程序来安全地继续?

2 个答案:

答案 0 :(得分:3)

我知道这听起来像是递归的,但我认为在这种情况下最好的办法是返回零。

当获取从初始化程序返回的nil值时,您无法真正预测对象的状态,因此最安全的做法就是处置对象。从初始化程序开始,这意味着只需将nil返回给调用者。

当分配]初始化时,我似乎总觉得这种情况会导致泄密,所以我一直非常犹豫,只是盲目地调用alloc] init。

答案 1 :(得分:2)

我从来没有亲眼见过它。但是由于objc处理nil非常好,所以我不会担心因为你从超级回复你的nil而得到超出你已经做过的特殊情况。