【问题标题】:How to get class and runtime information?如何获取类和运行时信息?
【发布时间】:2010-10-20 18:44:16
【问题描述】:

出于调试目的,我想在控制台中显示尽可能多的类信息,以及可能的运行时信息(类/函数在哪个线程中运行等)。

有没有一种简单的方法可以使用函数、变量甚至(外部)框架来做到这一点?

P.S:我正在使用 Cocoa Touch。

【问题讨论】:

    标签: iphone objective-c cocoa-touch xcode debugging


    【解决方案1】:

    在一个类中,如果你重载-(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 返回的更适合调试的描述。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多