2013-08-17 10 views

Antwort

32

Die #define ist ein Pre-Prozessor-Makro. Das bedeutet, dass es im Grunde Ihren Code durchläuft und Ihr Makro durch das, was Sie definiert haben, ersetzt.

Wenn Sie ein const verwenden, wird es ein Zeiger auf die Zeichenfolge im Speicher sein. Es ist viel effizienter, als wenn die gleiche Zeichenfolge zugewiesen wird, egal wo und wann sie verwendet wird.

Um dies zu tun, benötigen Sie beide .h und .m-Dateien. Ihre .h-Datei so etwas wie aussehen:

extern NSString * const YOUR_STRING; 

Und .m-Datei:

NSString * const YOUR_STRING = @"your string"; 
+1

In einfachen Anwendungsfällen wird der Compiler mehrere Kreationen von derselben Saite optimieren und eine const sowieso erstellen. Bei anderen, nicht trivialen Klassen ist es jedoch besser, einen konstanten Wert zu haben, der einmal initialisiert wird, wenn die Klasse zum Beispiel geladen wird. Conests sind auch gut, wenn Sie ein öffentliches Symbol in einer öffentlichen API anzeigen möchten. –

+3

sie werden beide als eine konstante Zeichenfolge in der ausführbaren Datei und im Speicher gespeichert werden ... –

+0

Was ist, wenn es ein Format wie @ "das ist meine Zeichenfolge mit int% i"? – user1802143

Verwandte Themen