У меня есть стандартная асинхронная операция NSURLConnection и NSMutableData, которая загружает json из веб-службы.
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
_responseData = [[NSMutableData alloc] init];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_responseData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError *error;
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:_responseData
options:NSJSONReadingAllowFragments
error:&error];
_responseJson = response;
}
Большую часть времени он работает безупречно, но для полезной нагрузки json с неопределенным размером я получаю ошибку Cocoa 3840 (я проверил достоверность json). Интересно, когда я NSLog необработанные данные в
-connectionDidFinishLoading:
Он не регистрирует все сразу, и пока логика в методе продолжает выполняться, необработанные данные продолжают загружаться в консоль в шахматном порядке.
-stringFromData:encoding:
Также возвращает nil, в то время как консоль записывает выходные данные в шахматном порядке. Фактическая полезная нагрузка составляет всего ~ 0,25 МБ. Я пробовал [[NSMutableData alloc] initWithCapacity:] с тем же результатом.