问题
I'm trying to debug an iOS app and I'm having problems with lldb in the simulator. Calling class methods doesn't seem to work. Instance methods work fine.
(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>
I've tried the 4.3 and 5.1 simulators but both exhibit the same issues.
Everything works fine when debugging on a device.
回答1:
This works. Thanks to @devioustree who answered in a comment above.
Basic command is structured like this:
po [(Class)objc_getClass("ClassName") class]
To invoke someClassMethodHere
:
po [[(Class)objc_getClass("ClassName") class] someClassMethodHere]
回答2:
Adding this to expand on the accepted answer...
If you're trying to assign a new value to a variable in lldb like I was instead of just printing out the value then do something like this...
expr self.myArray = (NSArray*)[[(Class)objc_getClass("NSArray") class] arrayWithObjects:@"valueOne",@"valueTwo",@"etc",nil]
来源:https://stackoverflow.com/questions/9887740/how-to-call-class-methods-in-the-ios-simulator-with-lldb