我正在阅读 Cocoa Design Patterns 书籍。在书中,分配self变量后,检查是否self如下nil所示
if( nil != self){
// code
}
我还看到了另一种检查自我的方法
if( self ){
// code
}
使用这两种技术有什么好处,还是只是偏好问题?
谢谢。
我正在阅读 Cocoa Design Patterns 书籍。在书中,分配self变量后,检查是否self如下nil所示
if( nil != self){
// code
}
我还看到了另一种检查自我的方法
if( self ){
// code
}
使用这两种技术有什么好处,还是只是偏好问题?
谢谢。
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非零时执行。
运算符在两个比较数(在本例中为和)相同的情况下返回!=,在两个比较数不相同的情况下返回。所以第二个块中的代码将在与 不同时执行。0selfnil1ifselfnil
但是d在. nil_ 因此,第二个块中的代码将在与 不同时执行。这与第一个块中的代码执行的时间完全相同:无论何时非零。#define0<objc/objc.h>ifself0ifself
由于这两种方法导致执行完全相同的代码,因此没有技术上的理由偏爱其中一种。在这种情况下,最重要的风格考虑是初始化器的一致性。决定你喜欢哪种风格并在任何地方使用它。