NSString to tak naprawdę klaster klasy.Oznacza to, że z różnych powodów, w tym wydajności opartej na treści i rozmiarze oraz w celu wspierania bezpłatnego łączenia się z CFString podczas tworzenia NSStringa, faktycznie można uzyskać jedną z wielu klas prywatnych, które zwracają TAK do postaciKindOf: gdy pytasz, czy jest to NSString i będzie odpowiadał wszystkim metodom w klasie NSString. To jest jak protokół, ale wszystkie obiekty będą mówić i robić i będą NSString w publicznym interfejsie API.
Ponieważ dokumentacja mówi o NSString i CFString, jest konceptualnie tablicą UTF16 unichar Może ona i będzie używać innej reprezentacji wewnętrznej, jeśli stanowi zaletę dla implementacji. Zwykle wydajność czasami rozmiar pamięci. Ale możesz na nim polegać, dając ci tablicę C z unichar, gdy zostaniesz zapytany lub cokolwiek innego, co obiecuje API.
Długo trwało dojrzewanie i jest modyfikowana wewnętrznie w niemal każdym wydaniu.
W skrócie tak, możesz myśleć o tym, że jest wspierany przez tablicę unicharów UTF16 w dużej mierze pasującą do opisu ciągu logicznego w standardzie Unicode. Ale pamiętajcie, że naprawdę nie powinniście martwić się tym, co jest w środku, tylko to, co mówi wam, że jest w środku.
To jedna z najlepszych implementacji Unicode. Jeśli chcesz uzyskać pełniejszy obraz tego, jak to działa, możesz spojrzeć na (większość) źródła CFString na opensource.apple.com To C i Core Foundation (obiektowo zorientowany C) i dość stylizowany, więc nie spodziewaj się zrozumieć to wszystko naraz.
NSString i CFString mają metody zwracania i tworzenia z unichar. Większość ludzi nie powinna ich potrzebować przez większość czasu. Jeśli tak, bądź ostrożny, bądź gotów dużo czytać i popełniać naiwne błędy. Unicode to duży temat. Prawidłowe obchodzenie się z nim to nauka i sztuka na tym poziomie. To jeden z powodów NSString. Obsługuje wiele trudnych rzeczy, więc nie musisz tak często, chyba że chcesz lub potrzebujesz.
zapomniałeś @ przed "TestString"? – newacct
Wiedziałem, że coś nie wygląda dobrze ... dzięki! – micmoo