epo*_*gee 12 cocoa cocoa-touch initialization objective-c
我已经虔诚地做了几年了.检查self调用[super init...]方法后的有效性:
self = [super init];
if (self != nil) {
// initialize
}
return self;
Run Code Online (Sandbox Code Playgroud)
你可以用各种方式做到这一点,因为这个问题很好地总结了,但这个问题是关于语法的,我的是关于概念的.
我最近从一位正在学习Objective-C的同事那里得到了一个问题,他问我"我为什么要测试自我的存在,是不是很明显它在那里?" 而我的简短回答是"错误,是的,那里有可能失败的情况,所以这就是原因." 但是很长的答案是,我真的不明白自己为什么要在任何地方进行测试,因为它可能失败的情况非常罕见.Apple的参考指南告诉我们一些特定情况,例如初始化文件或处理单例时.但这听起来像[super init]s应该起作用的规则是非常罕见的例外.
所以我的问题是:为什么我们总是测试自我的有效性?我们是否只是在任何地方实施它以捕获它发生的那个例外?为什么不跳过整个if (self)事情并初始化我们的对象,如果它成功的机会是100%(或从来没有这种情况)?
PS我意识到这个问题必须是一个骗局,因为它是如此基本,但我的搜索查询还有很多关于初始化语法的其他问题.Dupe链接很受欢迎,欢呼!
| 归档时间: |
|
| 查看次数: |
2918 次 |
| 最近记录: |