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