这被认为是典型的
- (id)init {
self = [super init];
if (self) {
// <#initializations#>
}
return self;
}
但是使用像这样实际响应适当的东西不是更好吗?
- (id)init {
self = [super init];
if (self) {
// <#initializations#>
} else {
@throw [NSException exceptionWithName:NSInternalInconsistencyException reason:@"you think your constructor is executing, but it's not"] userInfo:nil]
}
return self;
}
这个问题的推论是,“在什么情况下 [super init]
会返回 nil
而你不应该在 init
方法中处理它吗?”
最佳答案
不,Objective-C 中的异常是指您无法真正从中恢复的状态,而不仅仅是表明操作失败的东西。如果初始化失败,只需返回 nil 即可。
关于objective-c - 如果 [super init] 返回 nil 为什么不抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6574938/