在LLDB调试器中显示变量属性的值?

时间:2012-07-08 19:51:23

标签: xcode lldb

我正在使用带有Action“Log Message”的断点,我想要打印NSIndexPath的行。所以我尝试了:cell row @indexPath.row@但没有打印出来。我也尝试使用调试器命令:expr (void)NSLog(@"indexPath row:%i", indexPath.row)但我收到错误:error: property 'row' not found on object of type 'NSIndexPath *'

我做错了什么?

3 个答案:

答案 0 :(得分:27)

点语法只是编译器添加的语法糖。我总是不同意将其添加到Objective-C,但有些人喜欢它。您必须记住的是,这些点将被编译器转换为方法调用,因此当您直接发送消息时(例如在调试器中),您必须使用实际的方法调用。尝试重写你的表达:

expr (void)NSLog(@"indexPath row: %ld", (long int)[indexPath row])

我不确定调试器的基本日志方法是否会执行这样的方法调用,因此您可能必须使用表达式类型。

答案 1 :(得分:20)

我认为这是一个特例。下面的代码可以使用,但前提是row初始化为某个值。

(lldb) print (NSInteger)[indexPath row]

我认为这可能与以下事实有关:row属性是UIKit中NSIndexPath的扩展,并且作为该类的类别实现。

答案 2 :(得分:2)

尝试在Xcodes变量视图中设置此摘要格式:

section:{(int)[$VAR section]},row:{(int)[$VAR row]}