【问题标题】:How to call class methods in the iOS simulator with lldb?iOS模拟器中如何用lldb调用类方法?
【发布时间】:2012-04-10 21:04:42
【问题描述】:

我正在尝试调试 iOS 应用程序,但我在模拟器中遇到了 lldb 问题。调用类方法似乎不起作用。实例方法工作正常。

(lldb) po Category
<no result>
(lldb) po [Category class]
error: Couldn't prepare the expression for execution in the target
(lldb) po self
(TagsTableViewController *) $5 = 0x085585a0 <TagsTableViewController: 0x85585a0>

我尝试了 4.3 和 5.1 模拟器,但都出现了相同的问题。

在设备上调试时一切正常。

【问题讨论】:

  • 我认为这可能是 lldb 中的错误,但与此同时我找到了解决方法。这有点尴尬,但它有效:po [(Class)objc_getClass("ClassName") class]

标签: ios debugging lldb


【解决方案1】:

这行得通。感谢@devioustree 在上面的评论中回答。

基本命令的结构如下:

po [(Class)objc_getClass("ClassName") class]

调用someClassMethodHere

po [[(Class)objc_getClass("ClassName") class] someClassMethodHere]

【讨论】:

    【解决方案2】:

    添加这个以扩展已接受的答案...

    如果您像我一样尝试为 lldb 中的变量分配新值,而不是仅仅打印出该值,那么请执行以下操作...

    expr self.myArray = (NSArray*)[[(Class)objc_getClass("NSArray") class] arrayWithObjects:@"valueOne",@"valueTwo",@"etc",nil]
    

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2013-09-12
      • 2015-08-23
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多