2011-09-28 71 views
2

我想知道是否可以使用description功能在Cocoa框架來記錄一個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

據我所知,不。必須是'description'工作的Objective-C對象。 –

回答

6

號的description消息是在NSObject協議中找到的一種方法,因此根據定義,它必須是一個對象。但是,使用LOG_EXPR()宏可以更方便地進行日誌調試。這將需要的對象和結構:

LOG_EXPR(testlist);

其中將輸出:

testlist = {1.0,2.5,3.9};

該代碼可以找到here

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));