【发布时间】:2010-10-20 18:44:16
【问题描述】:
出于调试目的,我想在控制台中显示尽可能多的类信息,以及可能的运行时信息(类/函数在哪个线程中运行等)。
有没有一种简单的方法可以使用函数、变量甚至(外部)框架来做到这一点?
P.S:我正在使用 Cocoa Touch。
【问题讨论】:
标签: iphone objective-c cocoa-touch xcode debugging
出于调试目的,我想在控制台中显示尽可能多的类信息,以及可能的运行时信息(类/函数在哪个线程中运行等)。
有没有一种简单的方法可以使用函数、变量甚至(外部)框架来做到这一点?
P.S:我正在使用 Cocoa Touch。
【问题讨论】:
标签: iphone objective-c cocoa-touch xcode debugging
在一个类中,如果你重载-(NSString *)description方法,你可以很容易地用NSLog(@"%@", some_object);记录类信息
这是一个虚构的例子:
-(NSString *)description
{
return [NSString stringWithFormat:@"%@, %@, %d",
[super description],
class.object_ivar,
class.int_ivar];
}
您可以使用标准 C 宏来获取名称、文件、行号等内容... 使用 NSThread 类来获取有关正在调用该方法的线程的信息。
我在推特上发布了这个。 http://twitter.com/kailoa/status/1349928820如果您对更多此类花絮感兴趣,请随时关注我。我尝试定期放置它们。
#define METHOD_LOG (NSLog(@"%@ %s\n%@", NSStringFromSelector(_cmd), __FILE__, self))
【讨论】:
__PRETTY_FUNCTION__ 将为您提供类和任何类别以及选择器名称。它也适用于 C++ 和 Obj-C++。如果您计划使用调试器,print-object 默认调用-debugDescription,因此您可以覆盖它以提供比-description 返回的更适合调试的描述。