15

これは主に文体的な質問ですが、iPhoneのプログラミングを始めてから、他の人の考えがどうなっているのか興味がありました。iPhoneアプリケーションにUIViewがあり、アプリケーションの他の場所(通常はView Controllerの別の関数)でUIViewにアクセスする必要がある場合、ビューに整数のタグを付けてviewWithTag:メッセージで取得しますか、それとも通常、後で簡単にアクセスできるように、ビューコントローラのプロパティに設定しますか?

プロパティとして保存すると、後で取得しやすくなりますが、オブジェクトプロパティとして設定する代わりに、ビューにタグを付けることで節約できるメモリの量は(おそらく無視できる程度に)あると思います。

私は通常、ビューコントローラでプロパティを作成してきましたが、これは主に怠惰であり、でビューを取得するのviewWithTag:が面倒だからです。

4

6 に答える 6

6

これはOPの質問に接する可能性があることを認識していますが、これはGoogleにフィードするのに役立つ場合があります.

UIView のタグ付けで私が見つけた用途の 1 つは、実際にはビュー階層内のタグでビューを見つけることではなく (上記で参照したように、非常にコストがかかる可能性があります)、デリゲートによって 2 つ以上のビューを互いに区別することです。これは、大量のプロパティ割り当てを回避する方法として、それらのいくつかを処理するために割り当てられています (確実に UIViewController コードをより密結合にすることができます)。

これの典型的なケースは、UITableViewDataSource デリゲートが別のクラスに外部化された UITableViewController です。UITableViewController が後で検索バーを追加し、同じ UITableViewDataSource を利用したいとします。つまり、UITableViewDataSource メソッドが呼び出され、データ ソースは、UISearchDisplayController の searchResultsTableView から実際の UITableView を頻繁に区別する必要があります。UITableViewController が各テーブル ビューにタグを設定すると、データ ソースはタグ値に基づいて動作を簡単に分岐でき、テーブル ビューや (さらに悪いことに) 検索表示コントローラーの参照を必要としません。

繰り返しますが、これは質問者がほえていたツリーアップとまったく同じではないことに気付きましたが、タグを使用することに本当に満足している唯一のユースケースです。

于 2010-02-28T02:45:04.913 に答える
3

私は常にInterfaceBuilderでそれらをIBOutletivarsにバインドします

于 2009-01-29T20:04:46.657 に答える
3

Kendall が言ったことを繰り返しますが、viewWithTag: はコストがかかります。数百回の呼び出しのループがあり、ループの実行には2秒以上かかりました。配列に切り替えたところ、ループが実行されていることに気づきませんでした。

于 2009-06-04T16:24:24.920 に答える
3

私はこの議論に遅れましたが、タグを使用してビュー、特にコントロールを区別することに関する Justin Searls の主張を拡張する価値があると思います。基本的に同じことをするが、異なる値を表すボタンのグループが必要な場合があります。電卓のボタンが良い例です。すべてのボタン、または少なくともすべての数値ボタンは、同じターゲットとアクションに接続されます。ターゲットはボタンごとにアウトレットを持つことができ、アクションは送信者のアドレスを各アウトレットと順番に比較できますが、アクションがどのボタンが押されたかを識別するのに役立つ識別子を各ボタンに与える方がはるかに簡単です。これは、タグが最も役立つ場所です。

ビューコントローラーがビューを構成したりメッセージを送信したりするためにビューへの参照が必要な場合は、通常、アウトレットを使用するのが理にかなっています。あるビューと別のビューを区別する方法だけが必要な場合は、タグが適しています。

于 2011-03-19T07:20:01.277 に答える