2
我想暫停我的遊戲屏幕上的計時器,當iPhone被鎖定等我的問題是什麼是最好的方法來通知當前的UIView,AppDelegate沒有直接訪問?iPhone applicationWillResignActive - 如何通知當前UIView
我想暫停我的遊戲屏幕上的計時器,當iPhone被鎖定等我的問題是什麼是最好的方法來通知當前的UIView,AppDelegate沒有直接訪問?iPhone applicationWillResignActive - 如何通知當前UIView
1)您的計時器可能不應該由視圖管理,而應該由視圖的控制器管理。定時器本身不是你的用戶界面的固有部分,只有定時器的顯示。 (例如,如果你想讓定時器在刪除視圖後繼續,會發生什麼情況?)
2)任何對象(包含視圖或控制器)都可以獨立地偵聽適當的通知。例如,在您的視圖控制器(或視圖代碼,如果你選擇走這條路):
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(pauseTheTimer:)
name:UIApplicationWillResignActiveNotification
object:nil];
然後實施pauseTheTimer:方法將處理通知。 (由於只有一個UIApplication對象,因此可以使用nil作爲對象,如下所示。)
此方法很好地將您的應用程序委託與視圖和視圖控制器分開。
(哦,別忘了停下觀察,當你的看法被卸載或釋放。如果不這樣做能夠並且將會導致死機。)
這會否選擇自動被調用時willResignActive是因爲發名稱我給它,或者我必須在'applicationWillResignActive'手動發送通知 – Chris 2012-02-12 09:30:02
它會自動發生 - 你可以選擇選擇器(例如pauseTheTimer :),但關鍵部分是通知名稱。在UIApplication.h中查看 - 您會看到一堆名稱與其委託方法重疊的通知。在列表的開頭是評論「//這些通知在等同的委託消息被調用後發出」 – 2012-02-12 09:36:53
完美,謝謝你康拉德! – Chris 2012-02-12 09:38:58