使用描述打印结构

时间:2011-09-28 01:18:45

标签: objective-c cocoa struct nslog

我想知道是否可以使用Cocoa框架中的description函数来记录struct的内容。例如:

    typedef struct {float a,b,c;}list;
    list testlist = {1.0,2.5,3.9};
    NSLog(@"%@",testlist); //--> 1.0,2.5,3.9

2 个答案:

答案 0 :(得分:6)

没有。 description消息是NSObject协议中的方法,因此根据定义,它必须是一个对象。但是,使用LOG_EXPR()宏可以更方便地进行日志调试。这将采用对象和结构:

LOG_EXPR(testlist);

哪个会输出:

  

testlist = {1.0,2.5,3.9};

可以找到此代码here

答案 1 :(得分:1)

description是一种方法,因此只能在对象上调用。反过来,%@格式说明符仅适用于响应description的对象。

你可以编写自己的函数,使你的结构内容漂亮NSString

NSString * pretty_string_from_list( list l ){

    return [NSString stringWithFormat:@"<list: [%f, %f, %f]>", l.a, l.b, l.c];
}

然后在记录结构时调用该函数:

NSLog(@"%@", pretty_string_from_list(testlist));