我收到了这段代码:
import UIKit
protocol Test where Self: UIView {
func printAnything()
}
class MyView: UIView, Test {
func printAnything() {
print("Anything")
}
}
let myView: Test = MyView()
myView.printAnything()
约束是:where Self: UIView
将它粘贴到游乐场时,它会在运行时因此错误而崩溃:
错误:执行被中断,原因:EXC_BAD_ACCESS(代码= 1, 地址=为0x0)。
删除约束,确实会删除运行时错误并打印“Anything”。为什么添加的约束会在运行时崩溃?
运行XCode 9.3 Swift 4.1
答案 0 :(得分:3)
为了将此约束为Objective-C类型,协议必须为@objc
:
@objc protocol Test where Self: UIView {
func printAnything()
}
这是一个已知的缺陷:SR-7068。