私はCocoa BindingsとIBOutlets/IBActionsの根本的な違いについてはあまりよく分かりません。私は現在Obj-CプロジェクトをSwift 3に移行しています。特にSwiftではバインディングを使用するのが一般的なのかどうかを知りたいのですか?バインディングに関する一般的なコミュニティの議論はほとんどありません。私はCocoa/CocoaTouch開発者が初めてのCS学生ですから、冗長な回答に感謝します。SwiftでCocoa Bindingsを使うべきですか?
答えて
まず第一に、CocoaバインディングはCocoa Touchではサポートされていませんが、Cocoaのみでサポートされています。ソフトウェア開発の焦点がモバイルデバイスに集中して以来、Cocoaバインディングはあまり有名になっていませんでした。ただし、キー値の観察の上にバインディングを実装することはできます。問題は、価値があるかどうかです。大したことは、キーバリュー観察です。
さらに、Cocoaバインディングはリアクティブプログラミングの実装です。モバイルプラットフォームでは、UIが「よりモーダル」なので、これを行うというプレッシャーはデスクトップよりも低くなります。
Swiftとの関係では、特別な言語機能やObjective-Cの動的実行環境なしでKVOとCocoaバインディングを実装することは不可能です。実行時にクラスが作成され、文字列からセレクタが作成されます。すべてのダイナミックなものSwiftは嫌いで、不要にしようとします。だからあなたはそれを "unswifty"と呼ぶことができます。しかし、それはココアの生き残り部分であり、私が見ていないイデオロギー的な理由に加えて、なぜそれを放棄するべきなのか。
私が気づいた1つの問題は、あなたが素早い背景だけで来ているなら、主要な経路は期待通りではないかもしれません。例えば。 'NSSpplitViewItem'のSwiftインタフェースは、それがブール型プロパティ' isCollapsed'を持つことを示しています。しかし、それをキーパスとして使うことはできません。実際のキーパスはObjective Cのもので、 'collapsed' – Alexander
- 1. Cocoa Bindingsモデルキーパス部
- 2. Cocoa Bindings + NSArray +カスタムクラス
- 3. draw in cocoa swift
- 4. Cocoa Bindingsを使用してビューベースのソースリスト(NSOutlineView)を実装する方法の例?
- 5. display:blockを使うべきか、display:flexを使うべきですか?
- 6. setUpClassはいつ使うべきですか?__init__を使うべきですか?
- 7. iPhoneSimulatorsフレームワークをCocoaアプリケーションで使用できますか?
- 8. jQuery.each()を使うべきですか?
- 9. Python casefoldを使うべきですか?
- 10. Jira Agileでは "Story"をいつ使うべきか "Improvement"を使うべきか
- 11. Reactive Cocoa swift 3.0のメモリリーク
- 12. Swift 2.3プロジェクトでSwift 2.3フレームワークを使用できますか?
- 13. 編集可能なNSTableViewをNSMutableArrayにフックさせるために、CocoaのBindingsを使用することはできますか?
- 14. Wordpressをこのプロジェクトに使うべきですか、ゼロからハンドコードを使うべきですか?
- 15. C#では、いつ構造体を使うべきですか?クラスはいつ使うべきですか?
- 16. どうすれば使用できますか?:Swiftで?
- 17. NSImageをNSViewに設定する方法Cocoa swiftでCALayerを使用する
- 18. CruiseControlを使ってCocoa/Objective-Cプロジェクトをビルドできますか?
- 19. Swiftを使用したCocoaでの描画エラーを作成します
- 20. C#リストはいつ使うべきですか?そして、いつarraylistを使うべきですか?
- 21. @classmethodはいつ使うべきですか?defメソッド(self)を使うべきですか?
- 22. カスタムフォントをCocoa Touch Framworkに配置して、すべてのプロジェクトで使用できますか?
- 23. Swiftコードですべてのコアを使用するよう強制できますか?
- 24. Cocoa Async SocketチュートリアルSwift 2からSwift 3へのコード変換
- 25. オープンソースライブラリをWindowsでどのように使うべきですか?
- 26. C#でWMPEqualizerSettingsCtrlClassをどのように使うべきですか?
- 27. WellKnownTypesをC#でどのように使うべきですか?
- 28. Swift with Cocoa(Mac)でPDFを作成する方法
- 29. Cocoaポッドとswiftでフレームワークをインポートする方法3
- 30. マルチスレッドと比べてselectをいつ使うべきですか?
OS Xでは、ココアのバインディングは、ObjCの場合と同じです。 iOSの場合、[KVOに準拠していないため] UIKitコントロールでバインディングを使用しないでください(https://developer.apple.com/library/ios/documentation/General/Conceptual/DevPedia-CocoaCore/KVO.html) –
@ CodeDifferentビュー上のOS Xバインディングでさえ、しばしば可能であり、ほとんど役に立ちません。ビュー上にバインドするのは反コンセプトです。 –
@ AminNegm-Awad私はバインディングが非常に便利で、多くのコードを削減していることがわかりました。特に、アプリがデータ集約型の場合は特にそうです。それが動作するとき、それは魔法のように見えます。そのトリックは間違ったバインディングをデバッグするのが難しいため、正しく取得することです。それについて何か反意識はありません。 –