2009-07-20 11 views

Répondre

3

Depuis NSLog prend un NSString comme argument, il utilise le format NSString spécificateurs. Ceci est virtuellement identique aux spécificateurs printf. En outre, le spécificateur %@ n'est pas limité aux objets NSString, mais concerne tous les objets Objective-C. La classe de base NSObject fournit une description générique de l'objet constitué de sa classe et de son adresse, mais de nombreux objets fourniront des informations spécifiques à leur type, telles que les classes de collection (NSArray, NSDictionary) qui fourniront un vidage bien structuré de leur contenu. Vous pouvez fournir ceci pour vos propres objets que vous créez en remplaçant -description (voir la documentation pour plus d'informations, y compris la capacité de localisation).

Voir aussi: NSString Format Specifiers

+0

"% @" n'est valide pour aucun objet Objective-C, seuls les objets répondant à "description". Si je devais créer mon propre objet dérivant de Object (déclaré dans "objc/Object.h"), il ne sera pas nécessairement compatible avec "% @". – dreamlax

+0

Ceci est vrai, même si c'est ce que définit la documentation 'NSString Format Specifiers'. Même ajouter 'description' n'est pas suffisant si vous construisez votre propre classe racine. – johne

3

C'est une chaîne de format C normale avec l'extension de% @ (qui imprime tout objet NSObject en interrogeant sa méthode -description, pas seulement NSStrings).

Vous pouvez voir un aperçu dans printf manpage

+0

Il s'agit d'une chaîne de format C normale, à l'exception du spécificateur de conversion (evil)% n. Cela ne fonctionne pas dans les chaînes de format Objective-C. –