ios應用程序結構


MVC開發模式 

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

M —— 模型,為程序提供數據

V —— 視圖,為用戶提供界面

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

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

下圖是xcode所創建的singleView程序的標准文件。

image

圖中的ViewController實際上就是控制器,而Main.storyboard的作用就是用來創建視圖的。因為xcode不知道你要提供什么數據,所以它不會幫你創建模型文件,一般這個責任都落在開發者自己的身上。

 

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

我們都知道,所有的界面都是畫出來的。因此,如何畫,在哪里畫就是一個問題。先不談論如何畫,我們說說在哪里畫。借用官方的一張圖片說一下

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類里面進行初始化再適合不過了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM