ios應用程序結構

MVC開發模式 ios

什麼是mvc,相信有必定開發經驗的程序員都應該知道。程序員

M —— 模型,爲程序提供數據xcode

V —— 視圖,爲用戶提供界面mvc

C —— 控制器,用來控制程序視圖,即上面的Vapp

在ios程序中,一個控制器對應一個視圖。爲用戶呈現的是哪個界面,由控制器決定。spa

下圖是xcode所建立的singleView程序的標準文件。3d

image

圖中的ViewController實際上就是控制器,而Main.storyboard的做用就是用來建立視圖的。由於xcode不知道你要提供什麼數據,因此它不會幫你建立模型文件,通常這個責任都落在開發者本身的身上。code

 

視圖是怎樣被建立的(UIScreen,UIWindow)blog

咱們都知道,全部的界面都是畫出來的。所以,如何畫,在哪裏畫就是一個問題。先不談論如何畫,咱們說說在哪裏畫。借用官方的一張圖片說一下生命週期

image

在圖中,程序畫了一個文本和一個按鈕,這些東西實際上都是在window(是一個UIWindow類)上畫的。

既然要畫東西,咱們就必須知道畫紙(window)的尺寸,而這個window的尺寸就是屏幕的尺寸,一個UIScreen類表明一個屏幕,因此咱們使用UIScreen類實例的尺寸初始化window的尺寸。在某些程序中每每會見到下面的代碼就是這個緣由。

image

應用程序的生命週期,管理程序的狀態切換

由程序啓動到被銷燬,都會有一個階段,咱們能夠在不一樣的階段作不一樣的事情。AppDelegate文件就爲咱們提供了這個方便之門。AppDelegate類聽從了UIApplicationDelegate協議。該協議的主要工做是對程序的不一樣狀態做出響應。程序的狀態主要有:

  • 未運行:程序沒有被用戶或系統啓動,或者已經被終止
  • 未激活:程序已經被轉到前臺執行,可是它還不能接收到事件,這個階段一般很短暫。
  • 激活:程序這個時候已經能夠處理事件,或者能夠說正在和用戶交互。
  • 後臺運行:用戶不可見,可是仍然有能力執行一些代碼。
  • 掛起:程序依然駐留在內存中,可是沒法執行任何代碼。

下圖足以說明程序的狀態是怎樣切換的。

high_level_flow_2x

不一樣階段對應執行的方法:

啓動階段:

        application:willFinishLaunchingWithOptions:

    application:didFinishLaunchingWithOptions:

切換到前臺:

        applicationDidBecomeActive:

切換到後臺:

        applicationDidEnterBackground:

切換到未激活狀態:

        applicationWillResignActive: (當程序由前臺狀態離開時執行)

        applicationWillEnterForeground: (當程序從後臺狀態離開時執行)

終止:

        applicationWillTerminate:

 

前面咱們說的window屬性應該在哪裏初始化呢,相信不用說你們都知道了:

application:willFinishLaunchingWithOptions:

由於在程序被激活以前咱們就應該對相應的屬性進行初始化完畢,把window屬性定義在AppDelegate類裏面進行初始化再適合不過了。

相關文章
相關標籤/搜索