详解 IOS 7.1 程序启动原理

程序都是从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 程序启动原理

时间: 2024-10-06 11:08:36

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

iOS开发 - App程序启动原理

Info.plist和pch文件的作用 建立一个工程后,会在Supporting files文件夹下看到一个"工程名-Info.plist"的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 在旧版本Xcode创建的工程中,这个配置文件的名字就叫"Info.plist" 项目中其他Plist文件不能带有"Info"这个字眼,不然会被错认为是传说中非常重要的"Info.plist" 项目中还有一个InfoPlist.st

iOS程序启动原理

程序启动原理 掌握 Info.plist和pch文件的作用 UIApplication的常见使用 AppDelegate的代理方法 UIApplication.AppDelegate.UIWindow.UIViewController的关系 iOS程序的完整启动过程 … Info.plist常见的设置 建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除 在旧版本Xcode创建的工程中,这个

iOS的程序启动原理

一.程序启动原理 1.首先找到程序入口,执行main函数 main -> UIApplicationMain 2.UIApplicationMain底层做事情 1> 创建UIApplication对象 2> 创建UIApplication的代理对象,而且给UIApplication对象代理属性赋值 3> 开启主运行循环,作用接收事件,让程序一直运行 4> 加载info.plist,判断下有木有指定main.storyboard,如果指定就会去加载 3.创建UIWindow 1

iOS核心笔记——iOS应用程序启动原理

1.iOS应用程序启动示例图: 2.应用程序启动原理: 2-1.不通过storyboard文件启动: 执行main函数: 执行main函数中的UIApplicationMain函数,创建UIApplication对象,创建ApplicationDelegate对象并将其设置为UIApplication对象的代理: 程序启动完毕,开启消息循环(Main RunLoop).监听事件并调用注册方法:接着调用代理的application:didFinishLaunchingWithOptions:方法:

【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】

转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成设置账户信息. 确定 ItunesConnect 里 “Contracts, Tax, and Banking”的状态,如下图所示,即可: 这里也是由于Himi疏忽的原因没有说明,这里先给童鞋们带来的麻烦,致以歉意. //——2012-6-25日更新iap恢复 看到很多童鞋说让Himi讲解如何恢复i

iOS教程:详解iOS多图下载的缓存机制

ios教程,ios的干货一直来不及给大家分享,小编也是一直在忙啊!今天给大家献上ios:详解iOS多图下载的缓存机制 1. 需求点是什么? 这里所说的多图下载,就是要在tableview的每一个cell里显示一张图片,而且这些图片都需要从网上下载. 2. 容易遇到的问题 如果不知道或不使用异步操作和缓存机制,那么写出来的代码很可能会是这样: cell.textLabel.text = app.name; cell.detailTextLabel.text = app.download;NSDat

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

Java网络编程和NIO详解6:Linux epoll实现原理详解 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NIO https://blog.csdn.net/column/details/21963.html 部分代码会放在我的的Github:https://github.com/h2pl/ Linux epoll实现原理详解 在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者pol

iOS中的应用启动原理

iOS中的应用启动原理 来源: http://m.warting.com/program/201601/127355.html 一.UIApplication  1. 简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示. (3)通过[UIApplicationsharedApplicat

详解iOS开发之自定义View

iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加一个Hypnosister的类,这个类选择继承UIObject.修改这个类,使他继承:UIView @interface HypnosisView : UIView 自定义View的关键是定义drawRect: 方法,因为主要是通过重载这个方法,来改变view的外观.例如,可以使用下面代码绘制一个很