Objective-C自变量检查

时间:2012-10-21 17:12:03

标签: objective-c initialization

我正在阅读Cocoa Design Patterns书籍。在图书中,在分配self变量后,会检查self是否为nil,如下所示

if( nil != self){
// code
}

我还看到了另一种检查自我的方式

if( self ){ 
// code 
}

使用这些技术有什么好处,还是只是偏好?

感谢。

1 个答案:

答案 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这两个比较不相同的情况。因此,只要selfnil不同,第二个nil块中的代码就会执行。

但在#define 0 <objc/objc.h>if。因此,只要self0不同,第二个if块中的代码就会执行。这与第一个self块中的代码执行的时间完全相同:只要{{1}}非零。

结果

由于这两种方法导致执行的代码完全相同,因此没有技术上的理由可以优先选择其中一种。在这种情况下,最重要的风格考虑因素是初始化程序中的一致性。决定你喜欢哪种风格,并在任何地方使用它。