0

AppleのObj-Cドキュメントから:

メソッドがオブジェクトを返す場合、nilに送信されるメッセージは0(nil)を返します。例えば:

   Person *motherInLaw = [[aPerson spouse] mother]; 

ここでの配偶者オブジェクトがnilの場合、母親はnilに送られ、メソッドはnilを返します。

だからspouseここにオブジェクトを置くことができますか?オブジェクトの場合、セレクターである必要がありますか?

4

2 に答える 2

0

セレクターはC++クラスのクラスメソッドのようなもので、呼び出すメソッドの名前であり、受け入れるパラメーターの数とタイプを定義します。それはまったくオブジェクトではありません。上記の例では、「spouse」は呼び出すメソッド名です。それは決してオブジェクトではありません。

編集:

コード

Person *motherInLaw = [[aPerson spouse] mother];

これに拡張することができます:

Person *theSpouse = [aPerson spouse];
Person *motherInLaw = [theSpouse mother];

ご覧のとおり、「mother」メソッドは「spouse」メソッドの戻り値で呼び出されます。これにより、混乱が解消されます。

于 2012-06-16T03:37:10.853 に答える
0

文書は実際には正しいです。これは、objective-c の構文にすぎません。実際、このインスタンスでは、aPerson が配偶者の getter メソッドを呼び出しています。これが呼び出された時点で配偶者が設定されていない場合、nil が返されます。この時点で、母親の getter メソッドを配偶者に送信すると、nil へのメソッド呼び出しが発生します。

あなたが見ているのは確かにメソッドです - タイプ配偶者のオブジェクトを返すメソッドであり、私の上のポスターはすでにセレクターが何であるかを説明しています.

于 2012-06-16T04:12:06.280 に答える