Swift Playground 中的空类给出 __lldb_expr_ 错误

Posted

技术标签:

【中文标题】Swift Playground 中的空类给出 __lldb_expr_ 错误【英文标题】:Empty Class in Swift Playground Gives __lldb_expr_ Error 【发布时间】:2015-05-18 12:37:34 【问题描述】:

在 Swift Playground 中敲出一个空类会导致错误 __lldb_expr_

//: Playground - noun: a place where people can play

import UIKit

class FooBar 



let foo = FooBar()

请参阅随附的屏幕截图。

这发生在 Xcode 版本 6.3.1 (6D1002) 上。我还尝试了最新的 Xcode 6.4 beta 3 - 版本 6.4 (6E7) - 2015 年 5 月 11 日可用。同样的错误发生了。

在普通的 Swift 项目中构建空类没有问题。

可以通过简单地添加一个虚拟常量来避免该错误,如下所示:

//: Playground - noun: a place where people can play

import UIKit

class FooBar 
    let wibble = 10


let foo = FooBar()

考虑到创建初始空类是如此基本的事情,我对这个错误感到惊讶。就我而言,我想要一个滚动视图委托类来跟踪内容偏移量。使用没有属性的委托似乎是完全合理的。

有什么想法吗?

【问题讨论】:

【参考方案1】:

这不是错误。

这是一个信息,变量foo 现在拥有一个类FooBar 的对象,其内部 名称是__lldb_expr_12.FooBar。在这种情况下,__lldb_expr_12 是 Playground 中 Swift 模块的名称。

【讨论】:

啊,好消息!所以基本上没有属性,__lldb_expr 是默认输出的? 在 Playground 中你所有的类名都以__lldb_expr…. 为前缀。所有的类都必须属于一个有名字的 Swift 模块。类的内部名称为ModuleName.ClassName。而且由于您无法在 Playground 中选择自定义模块名称,它将使用 __lldb_expr…。 - 例如,当您构建一个应用程序时,它将是AppName.ClassName。 - 即它不依赖于属性。 我在 Xcode 11.3.1 中试过这个,我得到的是 foobar = Optional(LearnARC.Foobar)

以上是关于Swift Playground 中的空类给出 __lldb_expr_ 错误的主要内容,如果未能解决你的问题,请参考以下文章

整数溢出在 Swift 中给出 EXC_BAD_INSTRUCTION

逆向程序分析:C++的一个空类,为什么在内存中占1字节

swift_简单值 | 元祖 | 流程控制 | 字符串 | 集合

Swift 中的 Playground 不会使用 Firebase

如何将数据从 Playground 页面传递到 Swift Playgrounds 中的另一个 Playground 页面?

如何使用 Swift 3 Playground 读取 Resources 目录中的文本文件?