如何获取类和运行时信息?

Jak*_*ake 6 iphone debugging xcode cocoa-touch objective-c

出于调试目的,我想尽可能多地显示类信息,并且可能将运行时信息(运行类/函数的线程等)显示到控制台中.

使用函数,变量甚至(外部)框架有一种简单的方法吗?

PS:我正在使用Cocoa Touch.

ama*_*ttn 8

在类中,如果重载-(NSString *)description方法,则可以轻松地使用NSLog(@"%@", some_object);

这是一个虚构的例子:

-(NSString *)description
{
    return [NSString stringWithFormat:@"%@, %@, %d", 
                                      [super description], 
                                      class.object_ivar, 
                                      class.int_ivar];
}
Run Code Online (Sandbox Code Playgroud)

您可以使用标准C宏来获取名称,文件,行号等内容...使用NSThread类来获取有关调用该方法的线程的信息.

我把这个贴到了推特上. http://twitter.com/kailoa/status/1349928820 如果您对此类更多花絮感兴趣,请随时关注我.我试着定期把它们放好.

#define METHOD_LOG (NSLog(@"%@ %s\n%@", NSStringFromSelector(_cmd), __FILE__, self))
Run Code Online (Sandbox Code Playgroud)

  • `__PRETTY_FUNCTION__`将为您提供类和任何类别以及选择器名称.它也适用于C++和Obj-C++.如果您计划使用调试器,则print-object默认调用`-debugDescription`,因此您可以覆盖它以提供比`-description`返回的更适合调试的描述. (4认同)