我有一个标准的异步NSURLConnection操作和从Web服务加载json的NSMutableData。
- (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 Error 3840(我已经验证了json的有效性)。有趣的是,当我在
中NSLog原始数据时-connectionDidFinishLoading:
它不会立即记录所有内容,当方法中的逻辑继续执行时,原始数据会以交错方式继续加载到控制台中。
-stringFromData:encoding:
在控制台记录交错输出时也返回nil。 实际有效载荷仅为〜0.25mb。我尝试了[[NSMutableData alloc] initWithCapacity:],结果相同。