我想知道是否可以使用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
答案 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));