zoukankan      html  css  js  c++  java
  • iOS 应用是如何创建的

    iOS app life cycle 生命周期图

    image

    第一步: Main

    有C相关语言开发经验的朋友都知道,所有程序运行都是从 main 程序开始的。

    #import <UIKit/UIKit.h>
    
    #import "NoteNavAppDelegate.h"
    
    int main(int argc, char *argv[])
    
    {
    
        @autoreleasepool {
    
            return UIApplicationMain(argc, argv, nil, NSStringFromClass([NoteNavAppDelegate class]));
    
        }
    
    }
    

    第二步:UIApplicationMain

    UIApplicationMain 到底为我们做了什么事情?

    2.1、创建了UIApplication的实例。
    每一个应用程序都有一个UIApplication或其子类型的实例。当程序被加载,函数方法UIApplicationMain就被调用执行,它创建了单件模式的UIApplication对象。
    2.2、在 Info.plist 文件中寻找初始化需要的一些元素,这个文档包含了程序需要初始化的一些元素比如:icon、名称、指定主界面的nib文件等等。
    其中的 NSMainNibFile => MainWindow 指向主界面。


    app_timeline_template

    第三步:主界面

    主界面nib页面又给我们指定了什么东西呢?

    3.1、File’s Owner 表示当前nib文件的使用者可以看到是UIApplication
    3.2、First Responder 可以用于处理很多事件.句柄
    3.3、还指定了 application’s delegate
    3.4、A window 用于显示程序加载背景.  UIWindow class提供了一个container for views的管理和显示。

    app_timeline_customization

    下面是一个具有导航的Main Nib 文件的引用关系。

    image

    第四步:UIApplication加载结束后

    接下来处理的关键在于3.3所指定的delegate

    当UIApplication加载结束后,会给它所指定的delegate发一个application:didFinishLaunchingWithOptions: 事件消息.
    然后在这个方法里面创建自己的view controlle以及给主window指定subview.

    接下来的事情就是由程序员自己编程控制了。

    从MVC的角度看 iOS 的那些类

    TRwBbXoDTTzZG9mfMiYr39dTjeU37BRC_m

    iOS的消息流转流程

    1335413274_3604

    参考资料:

    IPHONE基于窗口应用程序的生死
    http://guogoul.com/2010/10/29/iphone-window-based-applicatio/

    iOS: some notes
    http://blog.csdn.net/totogogo/article/details/7353812

  • 相关阅读:
    IIS处理Asp.net请求和 Asp.net页面生命周期
    帝国CMS实现一二级导航及其高亮
    dsoframer.ocx 遇到64为系统
    实现可编辑的表格
    delegate()
    当前页面高亮的方法!
    简单的js版tab
    js判断最大值
    解决chrome下的默认样式!
    纯js点击隐藏相邻节点
  • 原文地址:https://www.cnblogs.com/ghj1976/p/2518284.html
Copyright © 2011-2022 走看看