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

  • 相关阅读:
    手机号码正则表达式
    POJ 3233 Matrix Power Series 矩阵快速幂
    UVA 11468
    UVA 1449
    HDU 2896 病毒侵袭 AC自动机
    HDU 3065 病毒侵袭持续中 AC自动机
    HDU 2222 Keywords Search AC自动机
    POJ 3461 Oulipo KMP模板题
    POJ 1226 Substrings KMP
    UVA 1455 Kingdom 线段树+并查集
  • 原文地址:https://www.cnblogs.com/ai-developers/p/4507766.html
Copyright © 2020-2023  润新知