程序都是从Main方法入口的 IOS 也不例外

int main(int argc,char * argv[])

{

@autoreleasepool {

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));

}

}

在IOS 里main 方法里有个UIApplicationMain里面带有4个参数

param 1: argc : 对应argv的参数数量

param 2: argv:    参数变量列表 (加载应用程序对应的-info.plist文件信息)

param 3: 指定UIApplication类或子类的名称。如果为nil默认就是UIApplication

param 4: 设置应用程序的代理对象。  如果是nil,则从应用程序的主nib文件加载的代理对象。

返回值: 这个方法一般不会返回,即使用户点击了IOS的home按钮,程序会把它移动到后台当中。

程序正常退出时,UIApplicationMain函数才返回

当程序启动完成后会来到AppDelegate,它继承UIResponder并遵循了UIApplicationDelegate

UIResponder:定义了响应和处理事件的接口,它是UIApplication、UIWindow、UIView的父类能够接收用户的运动事件和触摸事件

// 程序启动完成

(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

// 程序失去交点

(void)applicationWillResignActive:(UIApplication *)application

// 程序进入后台

(void)applicationDidEnterBackground:(UIApplication *)application
// 程序进入前台

(void)applicationWillEnterForeground:(UIApplication *)application

// 程序获取焦点

(void)applicationDidBecomeActive:(UIApplication *)application

// 程序即将关闭

(void)applicationWillTerminate:(UIApplication *)application

如果程序没有设置主要的启动storyboard文件,而且也没有在

(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法里设置window对象是不能进行正常活动

通常在此方法里设置

(BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]];

self.window.backgroundColor = [UIColorwhiteColor];

self.viewController =[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] ;

// 设置根视图控制器

self.window.rootViewController =self.viewController;

// 设置主视图并可见  窗口只有一个主视图

[self.windowmakeKeyAndVisible];

}

至此有了window对象后就能够在上面添加各种View进行自定义界面了

反之没有window对象 就看不见任何UI界面

详解 IOS 7.1 程序启动原理的更多相关文章

  1. iOS开发 - App程序启动原理

    Info.plist和pch文件的作用 建立一个project后,会在Supporting files目录下看到一个"project名-Info.plist"的文件,该文件对pro ...

  2. iOS app 程序启动原理

    iOS app 程序启动原理 Info.plist: 常见设置     建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件, ...

  3. iOS程序启动原理---iOS-Apple苹果官方文档翻译

    本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/Ch ...

  4. iOS APP程序启动原理

    UIApplication 程序启动原理 一个应用程序运行就必须要有一个进程,一个进程至少要有一个线程,我们把这个线程叫做主线程,主线程开启之后会开启一个主运行循环,如果不开启一个运行循环,程序开启了 ...

  5. Java网络编程和NIO详解6:Linux epoll实现原理详解

    Java网络编程和NIO详解6:Linux epoll实现原理详解 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO h ...

  6. RocketMQ详解(四)核心设计原理

    专题目录 RocketMQ详解(一)原理概览 RocketMQ详解(二)安装使用详解 RocketMQ详解(三)启动运行原理 RocketMQ详解(四)核心设计原理 RocketMQ详解(五)总结提高 ...

  7. 详解iOS开发之自定义View

    iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加 ...

  8. iOS中的应用启动原理

    iOS中的应用启动原理 来源: http://m.blog.csdn.net/article/details?id=50530090 http://m.warting.com/program/2016 ...

  9. HTTPS详解二:SSL / TLS 工作原理和详细握手过程

    HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...

随机推荐

  1. React Native 学习-01

    React Native 学习 (学习版本 0.39) 一.环境配置 二.IDE选择 webstorm 1.webstorm配置 ①.首先是可以选择使用汉化包汉化.eu68 ②.安装插件和外部库. 由 ...

  2. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  3. 华为地铁换乘 Java

    public class MetroTransfor {        static int ver=37;    static int point=35;    static int [][] di ...

  4. USE INSTAVPN TO DESPLOY VPN server IN amazon EC2

    Requirements Ubuntu 14.04 512 MB RAM Install curl -sS https://raw.githubusercontent.com/sockeye44/in ...

  5. 修改Linux默认启动级别或模式的方法

    冲动的惩罚: 海阔天空: 在linux系统的7种启动级别,默认为X-Window,类似于Windows的窗口模式. 如何修改或变更linux的默认启动级别或模式呢? 以root身份进入Linux,修改 ...

  6. hadoop运行原理之Job运行(四) JobTracker端心跳机制分析

    接着上篇来说,TaskTracker端的transmitHeartBeat()方法通过RPC调用JobTracker端的heartbeat()方法来接收心跳并返回心跳应答.还是先看看这张图,对它的大概 ...

  7. (转载)jQuery 1.6 源码学习(二)——core.js[2]之extend&ready方法

    上次分析了extend方法的实现,而紧接着extend方法后面调用了jQuery.extend()方法(core.js 359行),今天来看看究竟core.js里为jQuery对象扩展了哪些静态方法. ...

  8. SpringMVC 表单标签 & 处理静态资源

    使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...

  9. windows10 声音图标总是被禁用,检测显示:扬声器,耳机或者耳机已拔出

    参考来源:http://jingyan.baidu.com/article/90bc8fc85de19df652640c7f.html 控制面板/应用和声音/Realtek高清晰音频管理器 点击右上角 ...

  10. MicroERP开发技术分享:技术选型

    为什么要想起开发一个近似一套完整的ERP软件呢,原因有二:一是想在空闲时间把以前的进销存软件丰富一下,结果越搞越大了:二是这些年光搞C#了,不想把VB6忘光了 非微软的东西还真没时间去学,也有主要原因 ...