2012-02-16 49 views
0

我是iOS新手,嘗試學習一些基礎知識和核心概念。我知道,如果我們調用一個NULL對象的方法,它不會給出任何錯誤,但只是方法不會被調用。但是如果我有一個有效的對象,並且我正在調用一個接受參數的方法,並且該參數在其調用時爲null。在這種情況下會發生什麼?具有NULL參數的Objective C方法會發生什麼?

例如

[self callMethod1:methodArgument]; //methodArgument is null at this time 

-(void) callMethod1:(NSString *)methodArgument 
{ 
    //Do Stuff here 
} 

另外,如果我們使用C/C++,會發生什麼情況?

任何答案/想法將不勝感激。

感謝 維克

+0

如果只有某種方式,您可以將該代碼鍵入到您的計算機中,編譯它,然後查看發生了什麼...... – 2012-02-16 20:38:24

回答

3

沒有什麼特別之處這種情況下,它只會調用與nil/0作爲參數的方法。
在C++中,行爲是相同的:如果傳遞一個空指針,該方法將獲得一個空指針作爲參數。

傳遞nil(這僅僅是通常用於空指針Objectice-C對象的名字)是有意義的,考慮例如: -

[someClass setDelegate:nil]; // unregister delegate 

記住你是在傳遞指針,而不是實例。

+0

感謝您的答案Georg,以及C/C++的情況如何?在這種情況下它會給分段錯誤嗎? – Vik 2012-02-16 20:28:43

+0

@Vik:不,你只是傳遞指針參數(即某個地址)而'0'是一個有效值。你只是不應該取消引用它(例如'ptr-> someMethod()','* ptr','ptr [10]'等)。 – 2012-02-16 20:32:49

+0

@Vik - 還要注意** [無someMethod]; **是一個有效的操作,不會引發任何異常。 – sch 2012-02-16 20:56:30

相關問題