。事件驅動iOS編程是基於事件驅動的。我們所要做的事情就是寫代碼響應相應的事件。 每當使用者操作應用程式時,裝置就會產生事件。例如當使用者點擊一個按鈕時,裝置就會產生一個相應的“觸擊”事件並發送給應用程式。事件不僅僅來自使用者的直接互動,像來電、電量不足、檔案下載完成等也會產生事件。實際上在IOS裝置上發生的任何事情最終都會產生一個或多個事件。當一個事件產生時, 作業系統會檢查你的程式,看看是否某個類中的某個方法應該被通知。 iOS編程的關鍵是知道有些什麼事件?以及怎樣設定我們的方法,以便當這些事件發生時,讓相應的方法被調用? 理解程式的生命週期是很關鍵的。簡單顯示了一個程式從啟動到結束的事件流:
在程式生命週期的關鍵點,訊息被發送給應用程式中的對象,以便讓這些對象知道發生了什麼事情。當使用者按了Home鍵時,IOS上的程式實際上並沒有真正結束,而是進入了後台掛起狀態。
。程式狀態
我們程式的核心是main函數。當我們基於相應的模板建立工程時,Xcode會自動幫我建立該函數,通常我們都不需要做任何更改。那麼它的作用是什麼呢?
它的作用是作為應用程式的入口,在進入這個入口後把控制權轉交給UIkit framework中的一個類。
每個iOS應用程式都必須有一個類實現了UIApplicationDelegate協議。這個類就是應用程式代理程式對象,它負責監控應用程式的高層行為。應用程式代理程式對象必須實現一些UIApplicationDelegate協議中的關鍵方法,這些方法是用來處理一些關鍵事件的。
在物件導向方法學中 ,代理是一個實現了一些方法的對象,這些方法被另一個對象按需調用。
iOS所有程式狀態如下:
未運行 |
應用程式當前未啟動 |
未啟用 |
應用程式在運行,但不接收任何事件。當一個應用程式正要從一個狀態轉換到另一個狀態時,就處於未啟用狀態,處於這個狀態的時間 是很短的。應用程式保持未啟用狀態一段時間的情況只有在系統提示使用者對某些事件,例如來電、新資訊進行相應反應時。 |
啟用 |
程式正在運行並接收事件 |
後天 |
應用程式在後天運行。通常不直接和使用者互動。 |
掛起 |
不執行任何代碼,處於等待狀態。 |
在啟動時,一個程式從未運行狀態裝換到啟用或後台狀態。
應用程式代理程式協議的方法調用順序如下:
didFinishLaunchingWithOptions
applicationDidBecomeActive
applicationDidEnterBackground
xcode通常會提供這些方法的預設實現。