为什么对协议的类型约束会使我的方法崩溃?

时间:2019-04-15 13:06:43

标签: swift crash type-constraints

在我的协议上添加类型约束时,我的代码崩溃。

这是代码:

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”部分时,一切运行正常。有人知道为什么会这样吗?我认为类型约束只是约束。

0 个答案:

没有答案