我有一个应用程序,其中我需要一个设置页面,其中包含用户的一些凭据,然后他可以编辑它。从httprequest.by中取出的数组加载一个表视图,点击它的每一个可以选择转到另一个视图并更新该值并返回。我在这个更新视图上完成了对服务器的更新调用,如此..
dispatch_async(backgroundQueue_, ^{
[self performSelectorInBackground:@selector(load) withObject:nil];
dispatch_sync(dispatch_get_main_queue(), ^{
[self showHUD];
});
因为在mainqueue中我正在进行弹出操作。所以我需要在后台调用更新服务。但问题是当我回来时我在设置viewcontroller
中调用另一个服务。加载更新的值。有时候请求的委托人正在崩溃。我正在调用这样的服务。
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:uidstr forKey:@"userId"];
request.userInfo=[NSDictionary dictionaryWithObject:@"update" forKey:@"type"];
[request setPostValue:self.string forKey:@"age"];
[request setDelegate:self];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[self showHUD1];
[request startAsynchronous];
任何人都可以指出我如何通过崩溃我的应用程序来做到这一点。我认为问题是代表变得无效。
答案 0 :(得分:0)
将您的网络请求与视图控制器代码分离。这样,如果卸载视图,网络代理仍然存在。
例如:创建一个NetworkRequest单例类,它与网络进行所有通信,然后您可以使用NSNotifications或单个类中的@protocol接口(视图控制器可以成为其代理)来传递结果并根据需要更改状态。
有关Objective-C中关于单身人士的优秀教程,请参阅:http://www.galloway.me.uk/tutorials/singleton-classes/
答案 1 :(得分:0)
更好地降低ASIHTTP的使用率,因为开发人员不再支持此框架。您将无法获得对未来iOS版本可能更改的支持。