2010-11-12 19 views
0

对于myObject的的一个实例,是有在Objective C中检查有效对象的方法?

之间的差,如果(myObject的==无)

如果(myObject的)

我假设是,如果myObject没有被分配和初始化,它将是零,两个是同义词。

UPDATE:对不起,我错措辞我的问题,但我想你回答我的深意。让我澄清:

我有两个tableViews,每个都有自己的viewController,tblVC1tblVC2。对于用户点击表格行,viewController配置popView contentViewController,contentVC,它具有tblVC1和tblVC2属性。因此,如果用户点击由tblVC1处理,它将设置contentVC.tblVC1 = self,并且tblVC2属性未被初始化。

当我需要调用回推出的viewController我一直在检查其的viewController到这样的呼吁:

if (tblVC1) { 
    [tlbVC1 callTheMethod]; 
} else { 
    [tlbVC2 callTheMethod]; 
} 
所以,我要问:是 if (tblVC1)一样​​?

回答

5

if(myObject)检查,如果myObject的myObject的指向的内存区域!= 0x0和if(myObject == nil)检查点为0x0。 哦,myObject默认不会为NULL,但只有当它是一个ObjC类的ivar时,否则它将指向一个随机内存块。

(免责声明:请求在iOS和Mac OS X新的内存页面将导致一个干净的内存页,这意味着myObject的是在这种情况下NULL但我不会靠这个)

+0

感谢您的回复,它帮助我了解了我真正要求的。我已更新我的帖子以澄清我的问题。 – seeker12 2010-11-13 01:41:43

+0

是的,如果(tblVC1)在这种情况下评估的结果与if(tblVC1!= nil)相同。 顺便说一句,在objc-C将消息发送到NULL由运行时检测并不会做什么坏事(虽然你要经常检查指针!)。您可能还想检查tlbVC2是否指向某些内容,只是为了确保alloc操作没有失败。 – JustSid 2010-11-13 08:53:47

+0

感谢您的回复。很好的答案(虽然我不知道你总是检查指针是什么意思)。 – seeker12 2010-11-13 17:24:46

2

正确。 nil和默认值的详细讨论可在Cocoa with Love上获得。

编辑: JustSid是正确的指出,这只是保证实例变量。

+0

伟大的联系,谢谢。 – seeker12 2010-11-13 17:27:15

相关问题