Ho un file constants.h che dichiara un gruppo di stringhe che uso nella mia app. Ho solo archi e nient'altro. Dovrei usare #define o static NSString const? #define funziona, ma ho sentito che non è la migliore pratica.iOS #define o const statico per le stringhe globali
12
A
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";
Problemi correlati
- 1. statico const vs #define
- 2. #define o const string *
- 3. asser statico per variabili const?
- 4. C: Le direttive #define sono globali?
- 5. Quali sono le implicazioni dell'uso di const statico invece di #define?
- 6. const vs # define (comportamento strano)
- 7. Membri privati: Statico const vs. just const
- 8. Kernel Linux: Static Const vs #Define
- 9. C++ const correttezza con le stringhe
- 10. Quando vengono inizializzate le variabili const statiche globali?
- 11. #define MY_INT VS const int MY_INT
- 12. Come creare una matrice const statico const char *
- 13. C++ - enum vs. const vs #define
- 14. Statico, definitivo e const in C
- 15. const vs statico in PHP
- 16. Const array di stringhe
- 17. come impostare variabili const globali in python
- 18. struct statico con stringhe C per plugin lv2
- 19. Quale usare const char [] o const std :: string?
- 20. passa per valore o riferimento const o ...?
- 21. Inizializzazione dell'array statico di stringhe (C++)?
- 22. Tabella database per le impostazioni globali
- 23. utilizzando un const const statico in una struct/class
- 24. Posso utilizzare la concatenazione di stringhe per definire una classe CONST in PHP?
- 25. C'è qualche differenza tra "statico NSInteger const" e "statico const NSInteger"?
- 26. Devo memorizzare le mie costanti globali nel file delle risorse (.resx) o nelle classi?
- 27. Qual è la differenza tra le variabili globali e # define in c
- 28. statico, constexpr, const - cosa significano quando tutti usati insieme?
- 29. const vs statico di sola lettura
- 30. Come definire un membro const statico?
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. –
entrambi finiranno per essere archiviati come una stringa costante nell'eseguibile, e nella memoria ... –
E se fosse un formato come @ "questa è la mia stringa con int% i"? – user1802143