2016-06-28 11 views
2

私はCocoa BindingsとIBOutlets/IBActionsの根本的な違いについてはあまりよく分かりません。私は現在Obj-CプロジェクトをSwift 3に移行しています。特にSwiftではバインディングを使用するのが一般的なのかどうかを知りたいのですか?バインディングに関する一般的なコミュニティの議論はほとんどありません。私はCocoa/CocoaTouch開発者が初めてのCS学生ですから、冗長な回答に感謝します。SwiftでCocoa Bindingsを使うべきですか?

+0

OS Xでは、ココアのバインディングは、ObjCの場合と同じです。 iOSの場合、[KVOに準拠していないため] UIKitコントロールでバインディングを使用しないでください(https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/KVO.html) –

+0

@ CodeDifferentビュー上のOS Xバインディングでさえ、しばしば可能であり、ほとんど役に立ちません。ビュー上にバインドするのは反コンセプトです。 –

+1

@ AminNegm-Awad私はバインディングが非常に便利で、多くのコードを削減していることがわかりました。特に、アプリがデータ集約型の場合は特にそうです。それが動作するとき、それは魔法のように見えます。そのトリックは間違ったバインディングをデバッグするのが難しいため、正しく取得することです。それについて何か反意識はありません。 –

答えて

1

まず第一に、CocoaバインディングはCocoa Touchではサポートされていませんが、Cocoaのみでサポートされています。ソフトウェア開発の焦点がモバイルデバイスに集中して以来、Cocoaバインディングはあまり有名になっていませんでした。ただし、キー値の観察の上にバインディングを実装することはできます。問題は、価値があるかどうかです。大したことは、キーバリュー観察です。

さらに、Cocoaバインディングはリアクティブプログラミングの実装です。モバイルプラットフォームでは、UIが「よりモーダル」なので、これを行うというプレッシャーはデスクトップよりも低くなります。

Swiftとの関係では、特別な言語機能やObjective-Cの動的実行環境なしでKVOとCocoaバインディングを実装することは不可能です。実行時にクラスが作成され、文字列からセレクタが作成されます。すべてのダイナミックなものSwiftは嫌いで、不要にしようとします。だからあなたはそれを "unswifty"と呼ぶことができます。しかし、それはココアの生き残り部分であり、私が見ていないイデオロギー的な理由に加えて、なぜそれを放棄するべきなのか。

+0

私が気づいた1つの問題は、あなたが素早い背景だけで来ているなら、主要な経路は期待通りではないかもしれません。例えば。 'NSSpplitViewItem'のSwiftインタフェースは、それがブール型プロパティ' isCollapsed'を持つことを示しています。しかし、それをキーパスとして使うことはできません。実際のキーパスはObjective Cのもので、 'collapsed' – Alexander

関連する問題