如果我实现了一个没有合理默认值的类,那么我应该怎样处理不带参数的init方法?如果没有有效的默认值,则init方法无效。
我的直觉说应该释放对象并返回nil:
- (id)init {
[self release];
return nil;
}
...但是在阅读NSObject的Apple docs时:
每个类都必须保证init方法返回类的完整功能实例或引发异常。
这让我感到困惑:(
答案 0 :(得分:3)
提出异常。 :)像这样:
- (id)init
{
[self release];
//self = nil; not required when throwing an exception
@throw [NSException
exceptionWithName: NSGenericException
reason: @"-init not supported"
userInfo: nil];
}