NSString с \ 0 - PullRequest
       28

NSString с \ 0

2 голосов
/ 02 июня 2011

Каков наилучший способ инициирования строки NSString, содержащей @ "\ 0"?

NSString* foo = @"bar\0";

вызывает предупреждение «Литерал CFString содержит символ NUL».

Ответы [ 2 ]

6 голосов
/ 02 июня 2011

NSString объекты для текста.Подумайте об использовании объекта NSData или NSMutableData, если вы хотите иметь нетекстовые данные среди текстовых данных (например, когда они должны быть записаны в сокет или сохранены в файл).

3 голосов
/ 02 июня 2011

Вы можете поместить NUL-символ в экземпляр NSString, вот один пример:

int main() {
    NSString *string = [NSString stringWithFormat: @"Hello%CWorld!", 0];
    NSData *bytes = [string dataUsingEncoding: NSUTF8StringEncoding];
    NSLog(@"string: %@", string);
    NSLog(@"bytes: %@", bytes);
    return 0;
}

Помните , что в неожиданных моментах в вашем приложениивыполнение, строка будет преобразована в строку C (или что-то подобное) для взаимодействия с API более низкого уровня, и это приведет к обрезанию строки.Например, выходные данные вышеприведенной программы выглядят так:

2011-06-02 09: 18: 30.307 Без названия [294: 707] строка: Hello

2011-06-02 09: 18: 30.309 Без названия [294: 707] байт: <48656c6c 6f00576f 726c6421>

Показывает, что сам NSString полностью исправен, но NSLog() не будет отображаться правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...