我正在使用带有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 *'
我做错了什么?
答案 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]}