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

Sno*_*man 12 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 *'

我究竟做错了什么?

Jas*_*oco 27

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

expr (void)NSLog(@"indexPath row: %ld", (long int)[indexPath row])
Run Code Online (Sandbox Code Playgroud)

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

  • 我这样做了,但它告诉我我需要调用方法的返回类型,所以最终工作的是`(int)[indexPath row]` (2认同)

Mik*_*e M 20

我认为这是一个特例.下面的代码可以工作,但只有row初始化为某个值.

(lldb) print (NSInteger)[indexPath row]
Run Code Online (Sandbox Code Playgroud)

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