在我的协议上添加类型约束时,我的代码崩溃。
这是代码:
import Foundation
protocol MyTestProtocol where Self:NSObject {
func myTestMethod()
}
class SomeClass: NSObject {
var instanceVariable = "initial value"
}
extension SomeClass: MyTestProtocol {
func myTestMethod() {
instanceVariable = "overridden value" // <--The actual crashpoint
}
}
let someClass = SomeClass()
let justTheProtocol = someClass as MyTestProtocol
someClass.myTestMethod() // Works
justTheProtocol.myTestMethod() // Crash EXC_BAD_ACCESS
当我从协议中删除“ where Self:NSObject”部分时,一切运行正常。有人知道为什么会这样吗?我认为类型约束只是约束。