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类里面进行初始化再适合不过了。

相关文章
相关标签/搜索