Xcode调试器在视图上调用方法

时间:2018-09-30 00:16:33

标签: ios xcode debugging

假设我从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不是我自己的,所以看来对我的情况没有帮助。

1 个答案:

答案 0 :(得分:2)

  • 您可以在LLDB(控制台)中将语言设置为Swift

    (lldb) settings set target.language swift
    
  • MyView所属的类中并在确定已被实例化的作用域中添加一个Breakpoint。

  • 启动应用程序,并在达到断点时:

  • 类型po打印对象),后跟视图名称

    (lldb) po $myView
    

如果您想获取更多详细信息,请使用p print 的缩写):(lldb) p myView

  • 在视图之前调用eexprexpression的缩写)的方法:

    (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