問題タブ [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.
ios - 拡張プロトコルを使用した Swift 2.0 での複数のプロトコル継承
Swift 2.0 の新しい拡張プロトコルで遊ぶには、次の例を使用します。
「多重継承」のようなもので、もちろんPythonやC++などの一部の言語は多重継承として処理できます。私が本当に驚いたのは、Xcode 7.0 Beta 4 で発生した 2 つのコンパイル エラーです。
タイプ「C」はプロトコル「A」に準拠していません
タイプ「C」はプロトコル「B」に準拠していません
しかし、このエラーは意味がありません。エラーは、プロトコルA
と関数B
の使用に関する競合またはあいまいさなどを反映している必要があるためです。foo
上記のコードの下に次の行を追加すると:
これはまさに私が話しているエラータイプを起動します:
「foo」のあいまいな使用
ここでの私の質問は次のとおりです。
Swift 2.0 に拡張プロトコルが新たに追加されたことで、Apple はこの種の「多重継承」(C++ 処理の方法のようなもの) の処理を検討しましたか、それともまったく許可されていませんか?
swift - 異なるクラスを拡張するときの「プロトコルに準拠していません」エラー
URLSession
およびURLSessionDataTask
プロトコルに適応するオブジェクトを注入して、独自のクラスをテストしようとしています。これらのプロトコルを拡張NSURLSession
しNSURLSessionDataTask
て採用し、既存のオブジェクトを通常どおり使用できるようにしますが、単体テストではテスト オブジェクトを使用します。
エラーがコメントされた次のコードがあります。
エラーを理解しました。私のプロトコルは、によって実装されているメソッドと正確に一致しませんNSURLSession
。これを修正するにはどうすればよいですか?
swift - プロトコル拡張で定義されている場合、プロトコルで静的メソッドを呼び出す方法は?
XcodeはCar.foo()
正しくオートコンプリートするので、私が尋ねているのは、それがコンパイルされないバグであるかどうかです(foo()という名前のメンバーがないと言います)。プロトコル拡張で定義されている場合、静的メソッドをプロトコルで直接呼び出すことができますか?
objective-c - Objective-c でアクセスされるプロトコルの拡張機能で定義されたメソッドを Swift できる
Objective-C から Swift のプロトコル拡張で定義されたメソッドを呼び出すことは可能ですか?
例えば:
のインスタンスの価格文字列IceCream
は「$2」であり、Swift でアクセスできますが、メソッドは Objective-C では表示されません。コンパイラは、「'IceCream' の可視の @interface がセレクターを宣言していません ...」というエラーをスローします。
私の構成では、メソッドが Swift オブジェクトの実装で直接定義されている場合、すべてが期待どおりに機能します。すなわち:
ios - Swiftはプロトコル拡張を通知オブザーバーにします
次のコードを考えてみましょう。
次に、A を実装する UIViewController サブクラスを見てください。
しかし驚くべきことに、これはエラーでクラッシュします:
keyboardDidShow:]: 認識されないセレクターがインスタンス 0x7fc97adc3c60 に送信されました
ビューコントローラー自体にオブザーバーを実装する必要がありますか? エクステに残らないの?
以下のことはすでに試しました。
A をクラス プロトコルにします。署名としてプロトコル自体に keyboardDidShow を追加します。