Mam plik constants.h, który deklaruje kilka ciągów, których używam w całej mojej aplikacji. Mam tylko struny i nic więcej. Czy mam użyć #define lub statycznej stałej NSString? #define działa, ale słyszę, że nie jest to najlepsza praktyka.Definicja iOS # statyczna lub statyczna dla ciągów globalnych
12
A
Odpowiedz
32
#define
to makro procesora wstępnego. Oznacza to, że zasadniczo przechodzi on przez twój kod i zastępuje twoje makro tym, co zdefiniowałeś.
Jeśli użyjesz const, będzie to wskaźnik do łańcucha w pamięci. Jest to o wiele bardziej wydajne niż przydzielanie tego samego ciągu znaków w dowolnym miejscu/czasie.
Do tego potrzebne będą zarówno pliki .h, jak i .m. Plik .h będzie wyglądać następująco:
extern NSString * const YOUR_STRING;
a plik .M:
NSString * const YOUR_STRING = @"your string";
Powiązane problemy
- 1. Stopka statyczna w systemie iOS
- 2. -statyczna opcja dla gcc?
- 3. java klasa statyczna/zmienne
- 4. TypeScript: Najlepsza globalna statyczna zmienna statyczna
- 5. Jak sprawić, by moja klasa statyczna nie była tak statyczna?
- 6. Statyczna struktura iOS z włączonym bitcodem dla iOS9
- 7. Biblioteka statyczna Xcode 6.1. Dla systemu iOS nie została wygenerowana
- 8. Biblioteka statyczna Swift
- 9. Java Inicjalizacja statyczna Zamówienie
- 10. NullPointerException lub wypisze zawartość statyczna zmienna na
- 11. Repozytorium jako klasa statyczna lub niestatyczna?
- 12. statyczna metoda bez nazwy
- 13. Statyczna interferencja zmiennych ASP.net?
- 14. Zmienna statyczna szablonu
- 15. Zmienna statyczna kontra volatile
- 16. Blokada statyczna nie jest wywoływana
- 17. Biblioteka statyczna załadowana dwukrotnie
- 18. statyczna zmienna kolejność
- 19. statyczna zmienna Public
- 20. Django struktura statyczna
- 21. Statyczna inicjalizacja w ruchu?
- 22. Wysokość statyczna płótna Chartjs
- 23. Niewłaściwy Metoda statyczna
- 24. findViewById wewnątrz Metoda statyczna
- 25. Statyczna próba nie działa
- 26. Statyczna Główna klasa - AS3
- 27. Statyczna struktura w C++
- 28. statyczna klasa w maszynopisie
- 29. Python zmienna statyczna deallocation
- 30. Inicjalizacja statyczna tablicy całkowitej
w prostych przypadków użycia, kompilator optymalizuje wiele projekty tego samego łańcucha i utworzyć const tak. Jednak w przypadku innych, nietrywialnych klas lepiej jest mieć jedną stałą wartość, która jest inicjowana raz podczas ładowania klasy (na przykład). Consts są również dobre, gdy chcą pokazać publiczny symbol w publicznym API. –
oba będą w końcu przechowywane jako stały ciąg w pliku wykonywalnym, aw pamięci ... –
Co jeśli jest to format taki jak "to jest mój ciąg z int% i"? – user1802143