调试约束问题的一个令人难以置信的提示print the constraint`s id in lldb
但是我该怎么办才能让lldb打印我的类别描述?
@interface NSLayoutConstraint (Description)
@end
@implementation NSLayoutConstraint (Description)
-(NSString *)description {
return [NSString stringWithFormat:@"id: %@, constant: %f", self.identifier, self.constant];
}
@end
非常感谢帮助:)
答案 0 :(得分:0)
您可以通过两种方式使用描述方法。一,如果您的应用程序中的代码在某处:
NSLog(@"My Object: %@", my_object);
然后%@
说明符将打印由对象的“description”方法返回的NSString。
另一种方法是在调试器中:
lldb(和之前的gdb)有一个名为po
的命令 - 它是print-object
的缩写。它的工作是获取一些表达式,对其进行评估,将结果(在ObjC的情况下)解释为NSObject,并将该对象发送到description
方法。
所以在调试器中你可以调用
(lldb) po object
并打印出来。
但有一个细节:po
实际上首先检查对象是否响应debugDescription
,并且它会优先调用description
。因此,如果要扩展实现debugDescription
的对象(某些Kit对象执行此操作),则po
将显示debugDescription方法的结果,而不是您的描述。