1

サンプル シナリオを次に示します。

UITableViewに「アイテム」をリストするビューコントローラー「ItemsViewController」があります。これはすべて、UINavigationItem タイトル プロパティのタイトルを変更できるナビゲーション コントローラーで設定されます。同じページでこのプロパティに 2 つの方法でアクセスする名前のない本を読んでいますが、その理由はわかりません。

ポインターの使用

UINavigationItem *n = [self navigationItem]; [n setTitle: @"Title"];

オブジェクトメッセージの直接送信

[[self navigationItem] setTitle:[item itemName]];

これらの両方がどのように機能するかを理解しています(間違っている場合は修正してください)ポインターはnavigationItemを指し、プロパティを変更するとnavigationItemで変更されます

それ以外の場合は、更新された文字列を含む setTitle メッセージを navigationItem に送信します。

しかし、私の本当の質問は、どのような状況でも、なぜこれを一方の方法と他方の方法で行うのでしょうか? これらの方法のいずれかが有利になる時はありますか?

4

3 に答える 3

0

2 番目を実行すると、コンパイラは非表示の一時変数を生成します。最初のケースでは、コンパイラの一時変数を定義します。

多くの場合、「デイジー チェーン」操作を連続した一時割り当てに分割して (別の行でお願いします!)、シーケンスを明確にし、デバッグを容易にするのが最善です。

操作が分割されている (そして別の行にある!) ことで、ブレークポイントの設定、中間結果の調査などを簡単に行うことができます。また、パフォーマンスの面での「マイナス面」はありません。

(同じ行に複数のステートメントを配置することが正当化されることはめったにありません。そうしない理由はたくさんあります。)

于 2013-07-22T00:47:08.597 に答える