2011-06-19 2 views
1

を呼び出していませんでした:applicationWillTerminateは、この機能では、私はこれで、サーバーにデータを送信することを私は私のアプリでapplicationWillTerminateを使用しようと、私が欲しい

reqURL = [reqURL stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding]; 
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:reqURL]]; 
NSURLResponse *resp = nil; 
NSError *err = nil; 
NSData *response = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: &resp error: &err]; 

が、問題は、この機能がなかったということです私は私のアプリを閉じるときに呼び出す。

答えて

0

ほとんどの場合、アプリケーションはバックグラウンド状態になり、完全に終了することはありません。あなたのコードを入れてみてください:メモリから消去されるのとは対照的にのiOS 4.xでは

- (void)applicationWillResignActive:(UIApplication *)application; 
2

、アプリケーションは、多くの場合、(すぐに再開させるために)バックグラウンドに移動されます。 applicationWillTerminate:は、後者が発生したときにのみ呼び出されます。あなたはおそらくapplicationDidEnterBackground:あなたのアプリが終了したときに呼び出されますが、バックグラウンドで固執し続けます。クリーンアップを行うのに約5秒しかかからないので、リクエストが非常に重要であり、おそらく時間がかかる場合に備えて、beginBackgroundTaskWithExpirationHandler:/endBackgroundTask:の方法を調べることもできます。

+0

-applicationDidEnterBackground:が返った後、アプリケーションは警告なしで強制終了される可能性があります。 –

+1

私はバックグラウンドではないと明示的に述べていないアプリケーションでは、 '-applicationWillTerminate'を完全に避ける傾向があります。おそらく '-applicationDidEnterBackground'や' -applicationWillResignActive'はあなたのコードを置く場所としてはるかに良いでしょう。 – axiixc

関連する問題