Ваш код имеет несколько проблем. Во-первых, это не обычный шаблон для выделения объекта NSData
:
rawData = [[NSMutableData data] retain];
Хотя это технически правильно с точки зрения управления памятью, оно не является идиоматическим и приводит к отправке ненужной пары сообщений autorelease
и retain
. Вместо этого должно быть так:
rawData = [[NSMutableData alloc] init];
Во-вторых, этот код бесполезен:
int bytesRead;
bytesRead += len;
Вы объявляете переменную, не можете ее инициализировать, добавляете к ней len
(что технически является неопределенным поведением, но на x86 это будет безопасно), а затем ничего не делаете с ней. Возможно, вы захотите использовать долгоживущую переменную, объявленную вне этого блока, и правильно ее инициализировать.
Наконец, настоящая причина вашей проблемы заключается в том, что данные, которые вы получаете, не являются текстом UTF-8. Это некие двоичные данные со встроенными символами NUL (нулевые байты). Когда они преобразуются в строки, NUL сигнализируют об окончании строки, поэтому после них ничего не печатается.
Просто сохраните данные как NSData
, не пытайтесь преобразовать их в строку, если это не текстовые данные. С какими данными вы имеете дело? Откуда это?