Swift のプロトコルをよりよく理解しようとしています。具体的には、オプションのプロトコル メソッドです。この問題は、プロトコルが別のファイルで定義/使用されていることに関係している可能性があると考えましたが、プレイグラウンドに次のものを配置すると、同じ問題が発生します。
import Foundation
@objc protocol MyProtocol {
optional func shouldJump() -> Bool
}
extension NSObject : MyProtocol {}
class Test {
func testJump() {
let object = NSObject()
let jump = object.shouldJump?() ?? true
print("should jump: \(jump)")
}
}
let t = Test()
t.testJump()
エラーメッセージは次のとおりです。
error: value of type 'NSObject' has no member 'shouldJump'
let jump = object.shouldJump?() ?? true
^~~~~~ ~~~~~~~~~~
何らかの理由で、プロトコルが NSObject で定義されていることを受け入れません。コード補完はそれを見つけますが、コンパイラはそれを通過させません。
私の?? true
部分が機能するかどうかはわかりませんが、メソッドが定義されていない場合に備えて、それをデフォルト値にしたいと考えています。
これを機能させるにはどうすればよいですか?