2010-11-12 52 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

相關問題