如何让lldb打印用Objective-C类别编写的描述

时间:2016-02-06 03:37:33

标签: objective-c xcode autolayout categories lldb

调试约束问题的一个令人难以置信的提示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

非常感谢帮助:)

1 个答案:

答案 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方法的结果,而不是您的描述。