問題タブ [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.

0 投票する
1 に答える
260 参照

core-data - 制約付きプロトコル拡張での迅速な Core Data KVO での setValueForKey のあいまいな使用

次のコードがあります

setValue:ForKey: がこのエラーを引き起こしている理由はありますか? 興味深いことに、setValue:ForKeyPath: はこの問題の原因ではありません。副作用が発生し、setValue:ForKey 以外で機能する場合に備えて、後者を使用することを恐れています。アイデアはありますか?

0 投票する
1 に答える
744 参照

swift2 - Swift プロトコル拡張: 致命的なエラー: 異なるサイズの型間で unsafeBitCast を実行できません

での作業を簡素化するために、プロトコル拡張を使用してプロトコルを定義しましたNSError

プロトコルの使用方法は次のとおりです。

プロトコル拡張メソッドの呼び出し方法は次のとおりです。

このコードを実行すると、2 番目のgenerateError拡張機能の説明を作成する行でデバッガーが中断し、デバッガー コンソールに次のメッセージが表示されます。

致命的なエラー: 異なるサイズの型間で unsafeBitCast を実行できません

への呼び出しをString(format:)だけに置き換えるとformat、すべて正常に動作することに注意してください。

Q: ここで行ったことの何が問題になっていますか?

これに加えて、プロトコル拡張のパラメーターを調べることができません。しようとすると、次のメッセージが表示されます。

0 投票する
1 に答える
755 参照

swift - 指定されたイニシャライザでプロトコル拡張イニシャライザを呼び出す方法は?

既存のクラスの指定された初期化子にプロトコル拡張初期化子を挿入しようとしています。クラスから指定された初期化子をオーバーライドせずにそれを回避する方法はないと思います。次に、プロトコル拡張初期化子を呼び出します。

UIViewController以下は、特にクラスで試していることです。

フレームワークの既存の初期化プロセス中に自動的に呼び出されるように、プロトコル拡張初期化子を利用する方法はありますか?

0 投票する
1 に答える
576 参照

ios - メソッドにロジックを動的にアタッチすることは可能ですか?

クラスの init から別のメソッドにクロージャーを動的にアタッチしたいと思います。たとえば、拡張機能を追加して、イベントUIViewControllerにコードを挿入できるようにします。viewDidLoad以下のようなことを試しましたが、うまくいきません。

からプロトコル関数を明示的に呼び出すことなく、これを達成することは可能UIViewControllerですか? すべてのクラスを調べて、各関数のプロトコル関数を呼び出す必要はありません。これは退屈で冗長なコードであり、見落とされがちです。もっとエレガントな方法はありますか?

アップデート:

以下は、制限を考慮して私が考えることができる唯一の方法ですが、構成よりも継承を使用しており、プロトコル拡張関数を明示的に呼び出す必要があります。これは私がやりたいことではありません:

これは、プロトコル指向プログラミングの目的全体を無効にします。iOS 開発の範囲内で作業しているときに Swift が処理できるエレガントなアプローチはありますか、またはこの場合 POP は機能しませんか?

0 投票する
1 に答える
471 参照

swift - Swift プロトコル拡張では、混合クラス/プロトコル型の制約は許可されていますか?

Swift のどのバージョンでも、クラス/プロトコル型の制約が混在するプロトコルを拡張することは可能ですか? たとえば、が のサブクラスであり、 に準拠しているProtocol2場合にのみ拡張したいと考えています。SelfUIViewControllerProtocol1

0 投票する
1 に答える
99 参照

ios - プロトコル拡張は有効ではありません (Swift)

この質問を書いている時点で、私は Swift 2.1 と Xcode 7.2.1 を使用しています。

以下のコード ( a をエンコードするためのものstruct) は機能せず、Xcode プレイグラウンドがエラーなしでクラッシュします。プロジェクト内では、コンパイル中にセグメンテーション違反が発生します。

しかし、これらは機能する可能性があります。