2012-02-16 4 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

あなたのコンピュータにそのコードを入力してコンパイルし、何が起こるかを自分で確認する方法があれば... –

答えて

3

この場合についての特別なものは何もありません、それだけで、引数としてnil/0でメソッドを呼び出します。
C++での動作は同じです。ヌルポインタを渡すと、このメソッドは引数としてヌルポインタを取得します。

、あなたがインスタンスを、ポインタを渡していないことに注意してください:例えば

[someClass setDelegate:nil]; // unregister delegate 

を考える(一般Objectice-Cのオブジェクトへのヌルポインタのために使用さ名前だけである)意味のあるnilを渡します。

+0

答えがGeorgにありがとう、C/C++の場合はどうでしょう?その場合セグメンテーション違反ですか? – Vik

+0

@Vik:いいえ、あなたはポインタ引数(つまりいくつかのアドレス)を渡すだけで、 '0'は有効な値です。あなたは 'ptr-> someMethod()'、 '* ptr'、' ptr [10] 'など)を逆参照しないでください。 –

+0

@Vik - ** [nil someMethod]; **は有効な操作であり、例外は発生しません。 – sch

関連する問題