我试图在快速上下文中设置一些便捷变量,并从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范围?
答案 0 :(得分:1)
可以创建一个“临时上下文”,将其求值,然后将其放在反引号中作为变量传递给表达式。
这对于快速代码中的断点将起作用:
(lldb) expression -l swift -- var $answerSwift = 42
(lldb) expression -o -l objc -- `$answerSwift`
42
当我在快速代码中有一个断点时,我试图像这样设置objc变量:
(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>>