我使用AFHTTPRequestOperation服務器在AfNetworking得到響應數據2.0jsonObjectWithData導致內存崩潰?
NSURLRequest *request = [[ServiceHelper instance] getRequestData:postDict :[ServicesConfiguration GET_DOCUMENTS_URL]];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
AFHTTPRequestOperation *requestOperation = [manager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSDictionary *returnData = [[ServiceHelper instance] getReturnDictionary:responseObject];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
的getReturnDictionary方法呼籲responseObject是一個簡單的JSON序列..
- (NSDictionary *) getReturnDictionary : (NSData *) data {
if (data == nil) {
return [NSDictionary dictionary];
}
NSError * error = nil;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
if (error != nil) {
NSLog(@"Error parsing JSON: %@",error);
return [NSDictionary dictionary];
}
else
return jsonDict;
}
這工作得很好少量的數據。但是,當響應對象是像100MB,應用程序掛起
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
,然後在約15秒後,該應用程序崩潰由於存儲器錯誤。 我認爲它的數據大小非常自我解釋,但它不應該能夠處理它?
如果我直接從[NSURLConnection sendSynchronousRequest:]獲取數據; - 它沒有掛起或崩潰的作品。由於這是我最初做的 - 但切換到AFNetworking更容易顯示進度條。
任何想法或技巧值得讚賞。
什麼是確切的錯誤? – 2014-09-28 02:04:46
沒有錯誤。說:「上的應用程序意外終止。調試器發出的消息:由於存儲器錯誤而終止」 –
nserror
2014-09-28 02:33:25
這是一種已知的問題,這是以前報告過的。我更新了回答。還將爲AFNetworking提交一張票。 – bllakjakk 2014-09-28 03:17:22