2013-08-17 7 views

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"; 
+1

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. –

+3

oba będą w końcu przechowywane jako stały ciąg w pliku wykonywalnym, aw pamięci ... –

+0

Co jeśli jest to format taki jak "to jest mój ciąg z int% i"? – user1802143