话说,我们谈恋爱很长时间了,但最近你说:“你不是真的爱我,你根本就不理解我,我是谁,来自哪里,你知道么?”,面对你的质问,我竟然无言以对,或许我真的要重新认识你,而不仅仅是利用你,我错了,亲爱的,请给我一次机会,我想重新追求你,好么。
首先,你主要的工程结构包含有:
main.m 程序的入口
xxx-Prefix.pch 预编译头文件
xxx-Info.plist 程序配置文件
InfoPlist.string 国际化文件
xxx.app 最终程序
framework 各种框架
2 程序执行的顺序:
main.m是程序的入口;UIApplicationMain()创建应用程序对象,并且为此对象指定委托,检测程序的执行,同时开启事件循环,处理程序接收到的事件;UIApplicationDelegate 方法的执行;加载window ;指定根视图控制器。
3 认识一下 UIApplication
其就是应用程序本身,系统将其做成了实例来使用,每一个程序都是UIApplication或子类的实例,主要用于处理用户的事件,以及负责window 的显示,通常会给应用程序指定一个委托来检测程序的运行。
4 main函数
main函数因为在程序中被用到几乎没有,所以几乎把其忽略掉了,今天我们重新认识一下。我们都知道应用程序运行所需要的 大多数工作实际由其代理方法来执行,所以main函数会有一个标准的模板,
在main.m文件中代码如下:
#import#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
其主要作用,创建一个自动释池,调用UIApplicatinMain函数,以及使用自动释放池。
这里介绍一下UIApplicationMain函数的四个参数:前两个是需要传给main函数连个参数,具体干什么不太清楚,剩下的两个字符串参数,第三个是用于标识应用程序的首要类,即应用程序所属的类,如果第三个参数为nil,则UIKit就缺省使用UIApplicatin类。第四个参数是应用程序委托类,如果其为nil,则UIKit就会将应用程序的主nib文件中的摸个对象假定为应用程序的委托对象。如果第三个参数为非nil时,则启动程序时,UIApplicationMain函数会创建一个与传入值相应的类实例,所以一般情况下 第三个参数为 nil.
5 UIApplicationDelegate
其主要监听应用程序的一系列的行为,比如程序启动 活跃/非活跃状态 前后台切换 推送通知 内存警告,以及CoreData的初始化配置。
6 UIWinow
其有一个重要的属性是 rootViewController,用于装载窗口里面的第一个视图
其有一个重要的方法:makeKeyAndVisible ,将当前的window设为主window ,并且将其内容显示出来。
网友评论