objective-c - 如何从 lldb 中的 objc 访问快速便利变量?

标签 objective-c swift lldb

我正在尝试在 swift 上下文中设置一些方便的变量并从 ObjC 上下文访问它。​​

(lldb) expression -l swift -- var $answerSwift = 42
(lldb) expression -o -l swift -- $answerSwift
42
(lldb) expression -o -l objc -- $answerSwift
error: use of undeclared identifier '$answerSwift'

反之亦然:

(lldb) expression -l objc -- int $answerObjc = 42
(lldb) expression -o -l swift -- $answerObjc
42

如何将值从 swift 作用域(?)移动到 objC 作用域?

最佳答案

可以创建一个“临时上下文”,它将被评估,然后通过将其放在反引号中作为变量传递给表达式。

所以这将适用于 swift 代码中的断点:

(lldb) expression -l swift -- var $answerSwift = 42
(lldb) expression -o -l objc -- `$answerSwift`
42

当我在 swift 代码中有一个断点时,我尝试像这样设置一个 objc var:

(lldb) expression -l objc -- id $label = (id)self.label
error: use of undeclared identifier 'self'

objc 上下文无法访问 swift 变量 self,因此失败。

但是当将 self.label 放在反引号中以创建临时 swift 上下文时,我可以将它分配给 objc 变量:

(lldb) expression -l objc -- id $label = (id)`self.label`
(lldb) expression -l objc -O -- $label
<UILabel: 0x7f8030c03c40; frame = (44 44; 42 21); text = 'Label'; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x6000019b35c0>>

关于objective-c - 如何从 lldb 中的 objc 访问快速便利变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55066222/

相关文章:

ios - parse.com - 在 iOS 中获取对象延迟

ios - lldb断点,加载nib但没有得到UITableView

ios - 如何在运行时使用 lldb expr(调试控制台)设置 UIView 的框架

c++ - 如何在 lldb 上设置 std::string 类型?

ios - 如何在 ios 中操作 UITextView 的个性?

ios - UIIView 到 CGContext 横向坐标系

ios - 错误 : Use of undeclared identifier 'label'

objective-c - iOS AVFoundation : How do I fetch artwork from an mp3 file?

ios - awakeAfterUsingCoder() 导致 EXC_BAD_ACCESS

ios - Realm 列表和 Swift 数组