私のハンドラーがシステムによって呼び出されると、インスタンス変数へのポインターがいくつか失われるようです。
私の .m 実装では、
@implementation BackgroundWorker
MyApplication* myApp;
NSDate* lastUpdate;
そして私のハンドラーでは、その変数はもはや有効ではありません:
[[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{
// myApp is valid however
// Check that enough time has passed
NSDate* now = [NSDate date];
if (lastUpdate == nil || // <--- lastUpdate not a valid object
[now timeIntervalSinceDate:lastUpdate] >= TIME_RESOLUTION_SEC) {
// do stuff
lastUpdate = now;
}
}];
クラス メソッドでlastUpdateを正しく初期化すると、アプリの初回実行時に有効になりますが、バックグラウンドに移行してハンドラーが呼び出されると、変数は無効になります。
バックグラウンド コールバック間でインスタンス変数を破棄/クリアしないように OS に指示する方法はありますか?