如果没有默认值,我应该如何使用无参数init方法?

时间:2010-09-26 16:39:14

标签: objective-c

如果我实现了一个没有合理默认值的类,那么我应该怎样处理不带参数的init方法?如果没有有效的默认值,则init方法无效。

我的直觉说应该释放对象并返回nil:

- (id)init {
    [self release];
    return nil;
}

...但是在阅读NSObject的Apple docs时:

  

每个类都必须保证init方法返回类的完整功能实例或引发异常。

这让我感到困惑:(

1 个答案:

答案 0 :(得分:3)

提出异常。 :)像这样:

- (id)init
{
    [self release];
    //self = nil; not required when throwing an exception
    @throw [NSException
        exceptionWithName: NSGenericException
        reason:            @"-init not supported"
        userInfo:          nil];
}