Я пытаюсь лучше понять протоколы в 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
будет работать, но я хочу, чтобы это было значение по умолчанию, если метод не определен.
Как заставить это работать?