如何用lldb在iOS模拟器中调用类方法?
问题描述:
我试图调试一个iOS应用程序,我在模拟器中遇到了lldb问题。调用类方法似乎不起作用。实例方法正常工作。如何用lldb在iOS模拟器中调用类方法?
(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模拟器,但都显示相同的问题。
在设备上进行调试时,一切正常。
答
This works。感谢@devioustree回答了上面的评论。
基本命令的结构是这样的:
po [(Class)objc_getClass("ClassName") class]
要调用someClassMethodHere
:
po [[(Class)objc_getClass("ClassName") class] someClassMethodHere]
答
添加此对接受的答案扩大...
如果你想给lldb中的一个变量赋一个新的值,就像我一样,而不是只是打印出数值然后做这样的事情......
expr self.myArray = (NSArray*)[[(Class)objc_getClass("NSArray") class] arrayWithObjects:@"valueOne",@"valueTwo",@"etc",nil]
我在想这可能是lldb中的一个bug,但我在此期间找到了一个解决方法。这是有点尴尬,但它的工作原理: 'po [(Class)objc_getClass(“ClassName”)class]' – devioustree 2012-03-27 10:36:52