【发布时间】:2015-04-07 12:07:30
【问题描述】:
我正在使用 AfNetworking 发出 POST 请求。在完成块中收到响应后,进度 hud 视图被关闭,并且在 NSUserDefaults 中保存了一些数据。但是当我运行应用程序时,UI 不会更新,并一直等到应用程序因内存问题而崩溃。
这是我的示例代码:
[[HTAPIClient sharedClient] POST:requestAddress
parameters:nil
success:^(NSURLSessionDataTask *task, id responseObject) {
if ([responseObject objectForKey:@"default_source"]) {
NSUserDefaults *usd = [NSUserDefaults standardUserDefaults];
[usd setObject:[responseObject objectForKey:@"default_source"] forKey:@"payViaCreditCard"];
[usd synchronize];
}
NSDictionary *sources = [responseObject objectForKey:@"sources"];
if (sources) {
NSArray *data = [sources objectForKey:@"data"];
if (data) {
// some code
}
}
[self.navigationController popViewControllerAnimated:YES];
[SVProgressHUD dismiss];
}
failure:^(NSURLSessionDataTask *task, NSError *error) {
// some failure
}];
知道如何解决这个问题吗?
感谢您的提前!
编辑:
XCode 到底是这样说的:
“iPhone”上的应用“MyApp”意外退出。 来自调试器的消息:因内存错误而终止
【问题讨论】:
-
我还没有签入AFN2,但我猜是在主线程上调用了成功块(除非你已经改变它)?
-
是的,在主线程上调用了成功块,我没有改变行为。
-
在使用之前,您能否检查一下当您将响应对象转换为 NSDictionary 时是否会发生这种情况?
-
当我检查中断时,我可以看到块中的所有代码都运行成功。但是 UI 没有任何反应。
-
您应该确定内存错误的来源。到目前为止,它不在您与我们共享的代码中。可能是对内存的一些浪费(例如同时将许多大型资产(例如图像、电影等)加载到内存中),使用巨大的循环和自动释放对象,或者一些无限递归。通过使用调试器、断点或日志语句,确定它被捆绑的地方。
标签: ios afnetworking nsuserdefaults afnetworking-2