MVC開發模式 ios
什麼是mvc,相信有必定開發經驗的程序員都應該知道。程序員
M —— 模型,爲程序提供數據xcode
V —— 視圖,爲用戶提供界面mvc
C —— 控制器,用來控制程序視圖,即上面的Vapp
在ios程序中,一個控制器對應一個視圖。爲用戶呈現的是哪個界面,由控制器決定。spa
下圖是xcode所建立的singleView程序的標準文件。3d
圖中的ViewController實際上就是控制器,而Main.storyboard的做用就是用來建立視圖的。由於xcode不知道你要提供什麼數據,因此它不會幫你建立模型文件,通常這個責任都落在開發者本身的身上。code
視圖是怎樣被建立的(UIScreen,UIWindow)blog
咱們都知道,全部的界面都是畫出來的。所以,如何畫,在哪裏畫就是一個問題。先不談論如何畫,咱們說說在哪裏畫。借用官方的一張圖片說一下生命週期
在圖中,程序畫了一個文本和一個按鈕,這些東西實際上都是在window(是一個UIWindow類)上畫的。
既然要畫東西,咱們就必須知道畫紙(window)的尺寸,而這個window的尺寸就是屏幕的尺寸,一個UIScreen類表明一個屏幕,因此咱們使用UIScreen類實例的尺寸初始化window的尺寸。在某些程序中每每會見到下面的代碼就是這個緣由。
應用程序的生命週期,管理程序的狀態切換
由程序啓動到被銷燬,都會有一個階段,咱們能夠在不一樣的階段作不一樣的事情。AppDelegate文件就爲咱們提供了這個方便之門。AppDelegate類聽從了UIApplicationDelegate協議。該協議的主要工做是對程序的不一樣狀態做出響應。程序的狀態主要有:
下圖足以說明程序的狀態是怎樣切換的。
不一樣階段對應執行的方法:
啓動階段:
application:willFinishLaunchingWithOptions:
application:didFinishLaunchingWithOptions:
切換到前臺:
applicationDidBecomeActive:
切換到後臺:
applicationDidEnterBackground:
切換到未激活狀態:
applicationWillResignActive: (當程序由前臺狀態離開時執行)
applicationWillEnterForeground: (當程序從後臺狀態離開時執行)
終止:
applicationWillTerminate:
前面咱們說的window屬性應該在哪裏初始化呢,相信不用說你們都知道了:
application:willFinishLaunchingWithOptions:
由於在程序被激活以前咱們就應該對相應的屬性進行初始化完畢,把window屬性定義在AppDelegate類裏面進行初始化再適合不過了。