swift - 协议(protocol)扩展默认变量实现抛出段错误 11

标签 swift

我想使用变量的默认实现创建协议(protocol)扩展。这个简单的代码会抛出段错误 11,它也会在 Playground 中崩溃。 当删除“set”关键字时它工作正常,但是我不能简单地将值设置为实现此协议(protocol)的类中的“test”变量 有什么建议吗?

import UIKit

protocol Prot {
    var test: Int { get set }
}

extension Prot {
    var test: Int {
        return 1
    }
}

struct TestStruct: Prot {

}

最佳答案

如果出现段错误,那么这肯定是 Swift 编译器错误。 即使这样有效,这段代码仍然不能编译。

原因是您的扩展为 test 定义了默认的 get,但 TestStruct 没有 set ,所以它还不符合 Prot 。 如果不存在该错误,您将收到一条错误消息,内容类似于 TestStruct 不符合协议(protocol) Prot

p.s.:考虑将错误发送到 bugs.swift.org,因为这是一个非常小的示例,我们将不胜感激

关于swift - 协议(protocol)扩展默认变量实现抛出段错误 11,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36129261/

相关文章:

ios - 无法关闭 CNContactViewController

swift - 当当前的 SKSpriteNode 被触摸时,另一个 SKSpriteNode 会被移除

swift - 如何使用 ObjectMapper 在 Realm List 中映射 JSON 中的整数数组

iOS Swift - Firebase 自定义事件日志记录不起作用

swift - 将选定的行标题传回主 TableView Controller

swift - 如何更改 leftBarButtonItem 上的 pushViewController 的动画方向?

ios - 用户首次启动应用程序时显示教练标记 View Swift 3

ios - Swift iOS BLE writeValue 发送一次数据

ios - 使用 Swift 的 Alamofire - "Could not cast value of type ' Swift._SwiftDeferredNSArray' (ox10a75ebb0) 到 'Photomania.PhotoInfo' (0x107ee7b90)。”

ios - 如何调整 UIImage 的大小以减小上传图片的大小