假设我从Xcode调试器的“调试视图层次结构”中选择一个UIView。我可以打印其描述;看起来像这样:
Printing description of $17:
<MyView: 0x7fc6a451c030; frame = (0 0; 375 270); layer = <CALayer: 0x608000029700>>
那很好,但是我真正想做的是调用[myView myMethod]并打印结果。在这种特殊情况下,myMethod返回一个NSString,但我想那并不总是正确的。
我已经读过Calling methods from Xcode Debugger?,但由于myView不是我自己的,所以看来对我的情况没有帮助。
答案 0 :(得分:2)
您可以在LLDB(控制台)中将语言设置为Swift
(lldb) settings set target.language swift
在MyView
所属的类中并在确定已被实例化的作用域中添加一个Breakpoint。
启动应用程序,并在达到断点时:
类型po
(打印对象),后跟视图名称
(lldb) po $myView
如果您想获取更多详细信息,请使用p
( print 的缩写):(lldb) p myView
在视图之前调用e
或expr
(expression
的缩写)的方法:
(lldb) expr $myView.myMethod()
要查看UI中的更改,请调用
(lldb) expr CATransaction.flush()
有关更多信息,here是lldb命令的参考。
您还可以使用打印UI元素的描述后给出的内存地址,并将其转换为可用的类型:
(lldb) expr -- import UIKit
(lldb) expr -- let $myView = unsafeBitCast(0x7fc6a451c030, to: MyView.self)
(lldb) expr $myView.myMethod()
//Or if you'd like to create a variable with that result:
(lldb) expr let $string = $myView.myMethod()
(lldb) po $string