1

設定ページが必要なアプリケーションがあります。このページにはユーザーの資格情報があり、それを編集できます。httprequest から取得した配列からロードするテーブル ビューです。それぞれをクリックすると、別のビューに移動し、その値を更新して戻ってくるオプション。このような更新ビューでサーバーへの更新呼び出しを行いました..

 dispatch_async(backgroundQueue_, ^{
            [self performSelectorInBackground:@selector(load) withObject:nil];

            dispatch_sync(dispatch_get_main_queue(), ^{
                 [self showHUD];

            });

メインキューでポップバック操作を行っているため、バックグラウンドで更新サービスを呼び出す必要があります。しかし、問題は、戻ってきたときに設定で別のサービスを呼び出していることです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];

アプリをクラッシュさせずにこれを行う方法を誰か教えてもらえますか?問題はデリゲートがゼロになることだと思います。

4

2 に答える 2

0

ネットワーク要求をViewControllerコードから切り離します。そうすれば、ビューがアンロードされても、ネットワークデリゲートは引き続き存在します。

例:ネットワークとのすべての通信を行うNetworkRequestシングルトンクラスを作成します。次に、NSNotificationsなどのメカニズム、またはビューコントローラーがデリゲートになるシングルトンクラスの@protocolインターフェイスを使用して、結果とステータスの変更を渡すことができます。必要に応じて。

Objective-Cのシングルトンに関する優れたチュートリアルについては、http://www.galloway.me.uk/tutorials/singleton-classes/を参照してください。

于 2013-03-04T12:31:59.130 に答える
0

このフレームワークは開発者によってサポートされなくなったため、ASIHTTP の使用をやめたほうがよいでしょう。将来の iOS バージョンの変更の可能性に対するサポートは受けられません。

于 2013-03-04T12:54:54.613 に答える