問題タブ [protocol-extension]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
core-data - 制約付きプロトコル拡張での迅速な Core Data KVO での setValueForKey のあいまいな使用
次のコードがあります
setValue:ForKey: がこのエラーを引き起こしている理由はありますか? 興味深いことに、setValue:ForKeyPath: はこの問題の原因ではありません。副作用が発生し、setValue:ForKey 以外で機能する場合に備えて、後者を使用することを恐れています。アイデアはありますか?
swift2 - Swift プロトコル拡張: 致命的なエラー: 異なるサイズの型間で unsafeBitCast を実行できません
での作業を簡素化するために、プロトコル拡張を使用してプロトコルを定義しましたNSError
。
プロトコルの使用方法は次のとおりです。
プロトコル拡張メソッドの呼び出し方法は次のとおりです。
このコードを実行すると、2 番目のgenerateError
拡張機能の説明を作成する行でデバッガーが中断し、デバッガー コンソールに次のメッセージが表示されます。
致命的なエラー: 異なるサイズの型間で unsafeBitCast を実行できません
への呼び出しをString(format:)
だけに置き換えるとformat
、すべて正常に動作することに注意してください。
Q: ここで行ったことの何が問題になっていますか?
これに加えて、プロトコル拡張のパラメーターを調べることができません。しようとすると、次のメッセージが表示されます。
swift - 指定されたイニシャライザでプロトコル拡張イニシャライザを呼び出す方法は?
既存のクラスの指定された初期化子にプロトコル拡張初期化子を挿入しようとしています。クラスから指定された初期化子をオーバーライドせずにそれを回避する方法はないと思います。次に、プロトコル拡張初期化子を呼び出します。
UIViewController
以下は、特にクラスで試していることです。
フレームワークの既存の初期化プロセス中に自動的に呼び出されるように、プロトコル拡張初期化子を利用する方法はありますか?
ios - メソッドにロジックを動的にアタッチすることは可能ですか?
クラスの init から別のメソッドにクロージャーを動的にアタッチしたいと思います。たとえば、拡張機能を追加して、イベントUIViewController
にコードを挿入できるようにします。viewDidLoad
以下のようなことを試しましたが、うまくいきません。
からプロトコル関数を明示的に呼び出すことなく、これを達成することは可能UIViewController
ですか? すべてのクラスを調べて、各関数のプロトコル関数を呼び出す必要はありません。これは退屈で冗長なコードであり、見落とされがちです。もっとエレガントな方法はありますか?
アップデート:
以下は、制限を考慮して私が考えることができる唯一の方法ですが、構成よりも継承を使用しており、プロトコル拡張関数を明示的に呼び出す必要があります。これは私がやりたいことではありません:
これは、プロトコル指向プログラミングの目的全体を無効にします。iOS 開発の範囲内で作業しているときに Swift が処理できるエレガントなアプローチはありますか、またはこの場合 POP は機能しませんか?
swift - Swift プロトコル拡張では、混合クラス/プロトコル型の制約は許可されていますか?
Swift のどのバージョンでも、クラス/プロトコル型の制約が混在するプロトコルを拡張することは可能ですか? たとえば、が のサブクラスであり、 に準拠しているProtocol2
場合にのみ拡張したいと考えています。Self
UIViewController
Protocol1
ios - プロトコル拡張は有効ではありません (Swift)
この質問を書いている時点で、私は Swift 2.1 と Xcode 7.2.1 を使用しています。
以下のコード ( a をエンコードするためのものstruct
) は機能せず、Xcode プレイグラウンドがエラーなしでクラッシュします。プロジェクト内では、コンパイル中にセグメンテーション違反が発生します。
しかし、これらは機能する可能性があります。