Почему следующий код производит ведение журнала внизу? Вот аномалия - мой второй NSLog должен печатать chrStr, но ничего не производит, пусто, что подтверждается этой командой отладки:
(gdb) po chrStr
объект возвращает пустое описание
Однако третий NSString, где Я повторно конвертирую NSString обратно в объект NSData ДЕЙСТВИТЕЛЬНО отображает данные, то же значение, что и в первом NSLog, как и должно. Это указывало бы мне, что chrStr должно иметь фактическое содержимое. Но похоже, что это не так из NSLOG или команды po. Почему?
NSString *login;
NSString *pass;
// Purpose: NSString *loginString = [NSString stringWithFormat:@"\000%@\000%@", login, pass];
login = @"Loginname"; // text string1
pass = @"Password"; // text string2
// convert text strings to data objects
NSData *subData1 = [login dataUsingEncoding:NSUTF8StringEncoding];
NSData *subData2 = [pass dataUsingEncoding:NSUTF8StringEncoding];
// embed a NULL into new NSData object
NSMutableData *data = [NSMutableData data];
unsigned char zeroByte = 0;
[data appendBytes:&zeroByte length:1];
// append string1, NULL, string2 to data object
[data appendData:subData1];
[data appendBytes:&zeroByte length:1];
[data appendData:subData2];
NSLog(@"1.NSData: %@", data); // print data object
// create a character string from data object
NSString *chrStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"2.NSString: %@", chrStr); // print character string
// create data object from string object
NSData *chrData = [chrStr dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"3.NSDATA: %@", chrData); // print data object
Производит: [1071: 207] 1.NSData: 004c6f67 696e6e61 6d650050 61737377 6f7264
[1071: 207] 2.NSString:
[1071: 207] 3.NSDATA: 004c6f67 696e6e61 6d650050 61737377 6f7264
Для меня это настоящая загадка. Если chrStr пусто, то 3-NSDATA не может отобразить свою информацию, но отображает!
Что я пытаюсь сделать? Что ж, проверьте мою самую первую строку комментария: // цель:
Эта строка при раскомментировании выдает предупреждение, даже если она действительно работает, поэтому я пытался сделать это другим способом, который позволил мне получить чистую компиляцию. Если вы видите лучший способ достичь этой цели, я обращаюсь ко мне глазами и ушами. Но, пожалуйста, не зацикливайтесь на том, зачем нужна эта строка @ "\ 000% @ \ 000% @", начните с признания, что это так. Спасибо.