swift - 访问类属性时的 EXC_BAD_ACCESS
问题描述
我有一个非常简单的代码,但是当我调用它时,它会因错误testFunc()
而崩溃。谁能解释一下,为什么会这样?value = NSObject()
EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
class A {
var object: Any?
convenience init() {
self.init(nil)
}
private init(_ object: Any?) {
self.object = object
}
}
class B: A {
var value: Any?
func test() {
value = NSObject()
}
}
func testFunc() {
let b = B()
b.test()
}
解决方案
如果我在 Mac 命令行工具中运行您的代码,它就可以正常工作。如果我将它作为 iOS 游乐场运行,它会崩溃。
对我来说,它看起来像是操场上的错误。(这不会是第一次。我发现 Playground 非常不稳定,并且倾向于使用命令行工具而不是 Playground 来测试非 UI 编码想法,因为我发现 Playground 不稳定且不可靠。)
我尝试在不同点添加打印语句,并且第一次添加打印语句时它没有崩溃。然后几个编辑/运行周期后,它没有再次崩溃。我看不出你的代码有什么问题(除了它实际上没有做任何事情,并且创建一个空的 NSObject 没有真正意义。)
推荐阅读
- java - 从控制器中的变量初始化 TextField 并使用 Fxml
- python - Python中字典结构中的嵌套字典,希望以特定方式输出
- java - 如何在 Spring 中创建多 Web 模块应用程序?
- python - Python - For Loop - 仅在上述行相等时打印
- sql - MSSQL Server - 在多个字段上查找重复项
- c# - 尝试在 bool 任务后启动对话框,应用程序卡住
- c - 如何释放 uint32_t 指针?
- python-3.x - 避免张量流中静态图中的feed_dict机制
- javascript - Angular 2+ - 在 HTML FORM 中动态添加 DOM 元素
- mongodb - GraphQL 和 MongoDB 中的多态数据结构