2009-07-20 21 views

回答

3

概述由於NSLog需要NSString作爲它的參數,它採用了NSString格式說明。這與通用的printf說明符幾乎相同。此外,%@說明符不限於NSString對象,但適用於任何Objective-C對象。基類NSObject類提供了一個由它的類和它的地址組成的對象的一般描述,但是許多對象將提供特定於它們類型的信息,比如集合類(NSArray,NSDictionary),它們將爲其內容提供很好的格式轉儲。您可以通過覆蓋-description來創建自己的對象(請參閱文檔以獲取更多信息,包括本地化功能)。

參見:NSString Format Specifiers

+0

「%@」對於任何Objective-C對象無效,只對響應「description」的對象有效。如果我要創建自己的Object的對象(在「objc/Object.h」中聲明),它不一定與「%@」兼容。 – dreamlax 2009-07-21 00:30:04

3

這是一個普通的C格式字符串,擴展名爲%@(通過查詢它的-description方法打印任何NSObject,而不僅僅是NSStrings)。

你可以看到在printf的manpage

+0

這是一個普通的C格式字符串,但(邪惡)%n轉換說明符除外。它不適用於Objective-C格式的字符串。 – 2009-07-20 12:30:16

相關問題