當我的處理程序被系統調用時,我似乎放棄了一些指向實例變量的指針。iOS keepAlive回調實例變量
在我的.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正確的類方法,它是有效的第一次運行該應用程序,但如果它轉到後臺並且調用該處理程序,則該變量不再有效。
任何告訴操作系統不要銷燬/清除背景回調之間的實例變量的方法嗎?
謝謝你,我現在正在做什麼,但我想知道是否有辦法避免從NSUserdefaults進來的IO。當實例被刷新時是否有可能「檢測」? – George 2013-03-22 16:57:46
您是否嘗試通過屬性使變量可訪問? – 2013-03-22 18:01:39
你是說你在後臺調用處理程序(塊)嗎?或者你是說它從後臺返回並調用處理程序(塊),並且它不能正確執行。 – 2013-03-22 18:11:05