gpt4 book ai didi

swift - 协议(protocol)崩溃代码执行的约束

转载 作者:可可西里 更新时间:2023-11-01 00:55:29 26 4
gpt4 key购买 nike

我得到了这段代码:

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

当您将其粘贴到 playground 中时,它会在运行时崩溃并出现以下错误:

error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=1, address=0x0).

移除约束,确实移除运行时错误并打印“Anything”。为什么添加的约束会在运行时崩溃?

运行 XCode 9.3 Swift 4.1

最佳答案

为了将其限制为 Objective-C 类型,协议(protocol)需要为 @objc:

@objc protocol Test where Self: UIView {
func printAnything()
}

这是一个已知缺陷:SR-7068 .

关于swift - 协议(protocol)崩溃代码执行的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49742177/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com