在Objective C中检查有效对象的方法?

时间:2010-11-12 21:08:20

标签: objective-c

对于myObject的一个实例,

之间是否存在差异
  

if(myObject == nil)

  

if(myObject)

我的假设是,如果没有分配和初始化myObject,它将是nil,两者是同义词。

更新:对不起,我说错了我的问题,但我认为你回答了我真正的问题。让我澄清一下:

我有两个tableView,每个都有自己的viewController,tblVC1tblVC2。对于用户点击表行,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)相同?

2 个答案:

答案 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指出这只是实例变量的保证是正确的。