10

バインディングの恩恵を受けると思われるプロジェクトを開始しています (ソース リスト テーブル、いくつかのブラウザー ビューなどがあります)。私の限られた経験から、バインディングはトラブルシューティングが難しく、非常に「魔法」であることがわかりました (たとえば、ログをどこにでも挿入して、どこが壊れているかを把握することは困難であり、すべてが機能するかしないかのどちらかです)。

これは私の経験不足の話ですか (その場合、座ってバインディングの理解に取り組むだけで時間を費やすことができ、物事がより明確/簡単になり始めることを期待できます)、またはすべてのグルーコードを自分で書いた方がよいでしょうか理解してトラブルシューティングできると確信していた方法。

4

7 に答える 7

21

バインディングを使用します。

バインディングを最大限に活用するには、MVC パターンに従う必要があることに注意してください。最近では、Cocoa がほとんどすべてのことを行ってくれるので、これは思ったよりも簡単です。

  1. 表示:NSViewサブクラス (もちろん)、NSCellサブクラス、NSWindowサブクラス
  2. コントローラー:NSControllerおよびサブクラス (特にNSArrayController)
  3. モデル:コアデータ

Core Data を使用しない場合は、独自のモデル オブジェクトを作成できますが、これは簡単です。これらのオブジェクトのメソッドのほとんどは単純なアクセサであり、@synthesizeLeopard をターゲットにしている場合にのみ使用できます。

通常、コードをまったく書かないで済むことはありませんが、Bindings を使用すると、ごくわずかなコードを記述できるようになります。

推奨読書:

于 2008-11-10T17:36:31.743 に答える
8

バインディングは本質的に魔法のように見えることがあります。バインディングの背後にある魔法を理解するには、KVC/KVO を完全に理解する必要があると思います。私は本当に徹底的に意味します。

しかし、私の場合 (Obj-C の初心者 -- 9 か月)、KVC/KVO バインディングを入手したときはスリル満点でした。これにより、グルー コードが大幅に削減され、作業が大幅に楽になりました。バインディングのデバッグは、キーと値の変更が監視可能であることを確認するケースになりました。ビューがデータを反映していることを確認するよりも、自分のアプリが行うべきことを書くことに多くの時間を費やすことができることがわかりました。

ただし、バインディングが最初は非常に威圧的であることに同意します。

于 2008-11-10T17:10:23.450 に答える
5

私の一般的なアプローチは、可能な限りバインディングを使用して開始し、状況を確認することです。ただし、バインディングを使用して特定のインターフェイス要素に問題が生じたり、無駄な労力を費やしたりした場合は、より伝統的な方法 (データ ソース、アクションなど) を使用することに躊躇しません。これらのことを事前に予測するのはかなり難しいことがわかりましたが、長期的にはバインディングを優先する方が良いと思います.任意の利益。

于 2008-11-10T18:18:17.073 に答える
4

Bindings をしばらく使ってみたところ、それはまったく魔法ではないことがわかりました。十分に高度な技術だと思っていました。バインドされたインターフェイスのデバッグには、接着されたインターフェイスとは異なる手法が必要ですが、これらの手法を習得すると、再利用、保守性、および一貫性の面での利点が非常に重要になります。

于 2008-11-10T19:05:02.017 に答える
2

私のアプリケーションでは、バインディング、KVO、およびデータ ソース メソッドをほぼ同じように使用しているようです。それは本当に文脈に依存します。たとえば、私のプロジェクトの 1 つで、メイン ウィンドウのアウトライン ビュー以外のほぼすべての場所でバインディングを使用しています。同時に、KVO を使用して UI オブジェクトをリロードし、モデル オブジェクトの依存関係を追跡しています。

Bindings や Core Data などの高度な Cocoa トピックを学習する際に留意すべき重要なことは、それらの背後にあるすべてのテクノロジを理解する必要があるということです。データ ソース プロトコル、通知 KVO などのすべて。「魔法」がどのように機能するかを知るのに十分な経験を積んだら、より高いレベルのものをアプリケーションに簡単に統合できるようになります。

特定のケースでは、アプリケーションの開発に加えて、バインディングを学習するために余分な時間を費やす価値があるかどうかを判断する必要があります。可能であれば、バインディングを使用してアプリケーションの単純化されたプロトタイプを作成すると、実際のプロジェクトを開始するときに各要素を最適に組み合わせる方法がわかります。

于 2008-11-17T20:39:51.253 に答える
2

私の意見では、はい、バインディングを採用する必要があります。このテクノロジは現在十分に理解され、安定しており、記述する必要のない量のコードを実行する価値があります。最初にバインドに切り替えたとき、監視オブジェクトと監視オブジェクトの有効期間を一致させるのにかなりの苦労がありました。また、有効なオブジェクトを監視していたのに間違ったオブジェクトを監視していたため、UI が壊れていました。これらの問題を数回見れば、それらを回避する方法と、発生した場合にそれらを見つける方法を理解するのは簡単です. Hは。デバッガーで「このイベントがここでこの更新を引き起こした」というトレースをまだ望んでいますが、移動したことにはまだ満足しています。

于 2009-01-15T19:36:11.630 に答える
1

興味深いことに、私はバインディングを使用することになり、数日後に突然「意味をなす」ようになりました。ですから、先に進んで時間をかけてそれらを学ぶことをお勧めします。

また、Brian Webster のアドバイスも非常に役に立ちました。実際に、バインディングが自分のやりたいことを実行できなかったか、必要なことを実行するのが法外に複雑だったために、昔ながらの方法でいくつかのことを行うことになったからです。バインディング。

于 2009-01-15T17:29:52.243 に答える