对于myObject的一个实例,
之间是否存在差异if(myObject == nil)
和
if(myObject)
我的假设是,如果没有分配和初始化myObject,它将是nil,两者是同义词。
更新:对不起,我说错了我的问题,但我认为你回答了我真正的问题。让我澄清一下:
我有两个tableView,每个都有自己的viewController,tblVC1
和tblVC2
。对于用户点击表行,viewController配置一个popver contentViewController,contentVC
,它具有tblVC1和tblVC2属性。因此,如果用户点击由tblVC1
处理,则会设置contentVC.tblVC1 = self
,并且tblVC2
属性未初始化。
当我需要回调启动viewController时,我一直在检查要调用哪个viewController:
if (tblVC1) {
[tlbVC1 callTheMethod];
} else {
[tlbVC2 callTheMethod];
}
所以我应该问:if (tblVC1)
是否与if (tblVC1 != nil)
相同?
答案 0 :(得分:5)
if(myObject)
检查myObject是否指向内存区域!= 0x0并且if(myObject == nil)
检查myObject是否指向0x0。
哦,默认情况下myObject不会为NULL,但只有它是一个ObjC类的ivar,否则它会指向一个随机内存块。
(免责声明:在iOS和Mac OS X上请求新的内存页面将产生一个干净的内存页面,这意味着在这种情况下myObject将为NULL。但我不会依赖于此)
答案 1 :(得分:2)
正确。有关nil
和默认值的详细讨论,请参见Cocoa with Love。
编辑:JustSid指出这只是实例变量的保证是正确的。