代码之家  ›  专栏  ›  技术社区  ›  William Jockusch

从Xcode调试器调用视图上的方法

  •  0
  • William Jockusch  · 技术社区  · 6 年前

    Printing description of $17:
    <MyView: 0x7fc6a451c030; frame = (0 0; 375 270); layer = <CALayer: 0x608000029700>>
    

    这很好,但我真正想做的是调用[myView myMethod]并打印结果。在这个特殊的例子中,myMethod返回一个NSString,但我想这并不总是正确的。

    我读过 Calling methods from Xcode Debugger?

    1 回复  |  直到 6 年前
        1
  •  3
  •   ielyamani    6 年前
    • 您可以在LLDB(控制台)中将语言设置为Swift

      (lldb) settings set target.language swift
      
    • MyView 属于,并且在您确定是的范围内,它已经被实例化。

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

    • po ( )后跟视图的名称

      (lldb) po $myView
      

    p (缩写为 打印 ): (lldb) p myView

    • 对前面的视图调用方法 e expr (缩写为 expression ) :

      (lldb) expr $myView.myMethod()
      
    • 要查看UI中的更改,请调用此

      (lldb) expr CATransaction.flush()
      

    更多信息, here


    您还可以使用打印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