-1

applicationDidEnterBackgroundが呼び出されたときにURL接続をキャンセルしたい。しかし、アプリケーションの全範囲で接続を保存する方法がわかりません。他のViewControllerでいくつかのURL接続を作成しましたが、でキャンセルしたいと思いますAppDelegate。これどうやってするの?

4

3 に答える 3

3

UIApplicationDidEnterBackgroundNotification接続を作成するクラスにオブザーバーを追加できます。これを試して:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enterBackground) name:UIApplicationDidEnterBackgroundNotification object:nil];

これを呼び出すことを覚えておいてください

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil];

あなたのクラスでdealloc

于 2012-11-21T16:49:06.477 に答える
0

アプリがバックグラウンドに入ると、NSURLConnections が強制終了されると思います。

すべての NSURLConnections を追跡したい場合は、それらを NSSet、NSArray、またはその他のデータ構造に追加し、それらをループして閉じることにより、それらを自分で追跡する必要があります。NSURLConnection を継承または構成するクラスを持つこともできます。このデータ構造はキューへの追加を処理し、アプリの終了時にクリーンアップできます。

于 2012-11-21T14:59:21.643 に答える
0

applicationDidEnterBackgroundではなく、アプリが非アクティブになる前に接続を停止することをお勧めします。

答えは使用通知です:

-(void)init
{
//
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(closeConnection) name:UIApplicationWillResignActiveNotification object:nil];
//
}
-(void)closeConnections
{
// [urlConnection cancel];
}
于 2012-11-21T16:47:29.760 に答える