2011-12-04 7 views
0

objective-cで作業するときにちょっと混乱します。特にこの部分は私をたくさん混乱させます。目的Cメソッドと構文

目的および/またはこのようなコードを書くの違いは何ですか

...

object = [object method]; 

[object method]; 

今までObjective-Cのアップを学ぶ、私はいつも私が行うことができると仮定しました

私はすでにこれを作成していたと言っています。

NSString *object = [[NSString alloc]initWithFormat:@"%@"]; 

その後、私はそうのようなものと欲しいものを行うことができます。..

[object applyAnyMethodHere]; 

が、今、私はこのようなものを見ている...

object = [object applyAnyMethodHere]; 

これら2つの違いは何ですか?

+2

StackOverflowへようこそ!ユーザー名を選んで[FAQ](http://stackoverflow.com/faq)を読んで、しばらくお待ちください。 – Moshe

答えて

3

最初のもの(object = [object method];)は、返されるメソッドの割り当てです。

第2のもの([object method];)は、その戻り値(もしあれば)に注意を払わずにメソッドを呼び出すだけです。

第3(NSString *object = [[NSString alloc]initWithFormat:@"@"])は変数を宣言し、allocクラスメソッドの戻り値で呼び出されるinitWithFormatメソッドの戻り値を割り当てます。

+0

マイケルに感謝します。私は私の唯一の疑問は、違いが何であるかと思います。 "NSString * object = [オブジェクトメソッド];" と "NSString *オブジェクト; オブジェクト= [オブジェクトメソッド];" ? – Heartbound07

+0

少なくともほとんどの文脈で、読みやすさを超えたものはありません。 –

+0

どうもありがとうございます。 – Heartbound07

0

多くのプログラミング言語では、object = [object method];が「割り当て」ステートメントと呼ばれています。考えてみましょう:

x = y + z; 

を文が意味するように、右から左に、コンピュータによって読み取られる:

は、y、zは変数の和を計算し、その後、Xという変数に格納します。

実際の文全体で何が起こっているかは関係ありません。あなたの例では、コンピュータは:

"オブジェクト"という名前のオブジェクトに "メソッド"を実行し、結果を "オブジェクト"に戻すように指示します。

ただし、必ずしもメソッド呼び出しの結果を保存する必要はありません。たとえば、アラートビューを表示する場合は、次のように呼び出します。

[myalertView show]; 

割り当てが行われていないことに注意してください。メソッド呼び出しによって返された値を保存しない限り、代入は必要ありません。

また、この検討してください:

NSInteger x = 5; 

を全くメソッド呼び出しはありませんが、割り当てがあります。 object = [object method];のあなたの例は、単にそれより複雑なバージョンです。

関連する問題