NSString - действительно кластер классов.Это означает, что по разным причинам, включая производительность, основанную на содержании и размере, и на поддержку бесплатного подключения к CFString при создании NSString, вы можете получить один из многих частных классов, которые возвращают YES в isKindOf: когда вы спрашиваете, является ли это NSString и он будет отвечать на все методы класса NSString. Это похоже на протокол, но все объекты будут говорить и делать и быть NSString в публичном API.
Как указано в документации для NSString и CFString, это концептуально массив UTF16 unichar. Он может и будет использовать другое внутреннее представление, где он представляет преимущество реализации. Обычно производительность иногда зависит от размера памяти. Но вы можете положиться на это, давая вам массив C unichar, когда его спросят, или что-то еще, что обещает API.
У него было много времени для того, чтобы созреть, и он исправлен внутренне почти в каждом выпуске.
Короче говоря, вы можете думать об этом как о поддержке массива унитарных UTF16, в основном соответствующих описанию логической строки в стандарте Unicode. Но нужно иметь в виду, что вам действительно не нужно беспокоиться о том, что внутри, только то, что он говорит вам, находится внутри.
Это одна из лучших реализаций Юникода. Если вы хотите получить более полную картину того, как это работает, вы можете посмотреть (большинство) источника CFString на opensource.apple.com Это C и Core Foundation (объектно-ориентированный C) и довольно стилизованный, поэтому не ожидайте сразу все понимаю.
NSString и CFString имеют методы возврата и создания из unichar. Большинство людей не должны нуждаться в этом большую часть времени. Если да, будьте осторожны, будьте готовы много читать и совершать наивные ошибки. Unicode - большая тема. Правильно его обрабатывать - это наука и искусство на этом уровне. Это одна из причин NSString. Он обрабатывает много жестких вещей, поэтому вам не нужно так часто, если вы этого не хотите или не хотите.
вы забыли @ перед «TestString»? – newacct
Я знал, что что-то не выглядело правильно ... спасибо! – micmoo