如果用户从该视图控制器弹出,如何保持ASIHTTPRequestDelegate?

时间:2013-03-04 12:12:03

标签: iphone ios ipad

我有一个应用程序,其中我需要一个设置页面,其中包含用户的一些凭据,然后他可以编辑它。从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];

任何人都可以指出我如何通过崩溃我的应用程序来做到这一点。我认为问题是代表变得无效。

2 个答案:

答案 0 :(得分:0)

将您的网络请求与视图控制器代码分离。这样,如果卸载视图,网络代理仍然存在。

例如:创建一个NetworkRequest单例类,它与网络进行所有通信,然后您可以使用NSNotifications或单个类中的@protocol接口(视图控制器可以成为其代理)来传递结果并根据需要更改状态。

有关Objective-C中关于单身人士的优秀教程,请参阅:http://www.galloway.me.uk/tutorials/singleton-classes/

答案 1 :(得分:0)

更好地降低ASIHTTP的使用率,因为开发人员不再支持此框架。您将无法获得对未来iOS版本可能更改的支持。