当系统调用我的处理程序时,我似乎丢失了一些指向实例变量的指针。
在我的 .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并且它在应用程序第一次运行时有效,但是如果它进入后台并且调用了处理程序,则该变量不再有效。
有什么方法可以告诉操作系统不要在后台回调之间销毁/清除实例变量?