2013-08-17 12 views

risposta

32

#define è una macro pre-processore. Ciò significa che in pratica passa attraverso il codice e sostituisce la tua macro con quello che hai definito.

Se si utilizza un const, sarà un puntatore alla stringa in memoria. È molto più efficiente di avere la stessa stringa assegnata ovunque/ogni volta che viene utilizzata.

Per fare ciò, avrete bisogno di entrambi i file .h e .m. Il file .h avrà un aspetto simile:

extern NSString * const YOUR_STRING; 

e il file .m:

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

In semplici casi d'uso, il compilatore di ottimizzare molteplici creazioni della stessa stringa e creare un const comunque. Tuttavia, con altre classi non banali, è meglio avere un valore costante che viene inizializzato una volta al caricamento della classe (ad esempio). Anche le offerte sono buone quando si vuole esporre un simbolo pubblico nell'API pubblica. –

+3

entrambi finiranno per essere archiviati come una stringa costante nell'eseguibile, e nella memoria ... –

+0

E se fosse un formato come @ "questa è la mia stringa con int% i"? – user1802143

Problemi correlati