我正在阅读Cocoa Design Patterns书籍。在图书中,在分配self
变量后,会检查self
是否为nil
,如下所示
if( nil != self){
// code
}
我还看到了另一种检查自我的方式
if( self ){
// code
}
使用这些技术有什么好处,还是只是偏好?
感谢。
答案 0 :(得分:1)
if
块的内容
if (expression) {
// contents...
}
如果expression
计算为非零值,则执行。
这意味着以下if
阻止
//the first if block
if (self) {
// contents....
}
只要self
非零,就会执行。
同时,此 if
阻止
// the second if block
if (self != nil) {
// contents...
}
只要self != nil
非零,就会执行。
如果两个比较(在本例中为!=
和0
)相同并且在self
中返回nil
,则运算符1
会返回if
这两个比较不相同的情况。因此,只要self
与nil
不同,第二个nil
块中的代码就会执行。
但在#define
0
<objc/objc.h>
为if
。因此,只要self
与0
不同,第二个if
块中的代码就会执行。这与第一个self
块中的代码执行的时间完全相同:只要{{1}}非零。
由于这两种方法导致执行的代码完全相同,因此没有技术上的理由可以优先选择其中一种。在这种情况下,最重要的风格考虑因素是初始化程序中的一致性。决定你喜欢哪种风格,并在任何地方使用它。