工程文件目录及程序的启动原理

来源:互联网 发布:域名一般多少钱 编辑:程序博客网 时间:2024/06/05 00:58

一、Info.plist和pch文件的作用
建立一个工程后,会在Supporting files文件夹下看到一个“工程名-Info.plist”的文件,该文件对工程做一些运行期的配置,非常重要,不能删除

常见属性(括号内看到的为key)

1、Localiztion native development
region(CFBundleDevelopmentRegion)-本地化相关
2、Bundle display name(CFBundleDisplayName)-程序安装后显示的名称,限制在10-12个字符,如果超出,将被显示缩写名称
3、Icon file(CFBundleIconFile)-app图标名称,一般为Icon.png
4、Bundle version(CFBundleVersion)-应用程序的版本号,每次往App Store上发布一个新版本时,需要增加这个版本号
5、Main storyboard file base name(NSMainStoryboardFile)-主storyboard文件的名称
6、Bundle identifier(CFBundleIdentifier)-项目的唯一标识,部署到真机时用到

二、pch文件
项目的Supporting files文件夹下面有个“工程名-Prefix.pch”文件,也是一个头文件

pch头文件的内容能被项目中的其他所有源文件共享和访问

一般在pch文件中定义一些全局的宏

在pch文件中添加下列预处理指令,然后在项目中使用Log(…)来输出日志信息,就可以在发布应用的时候,一次性将NSLog语句移除(在调试模式下,才有定义DEBUG)

#ifdef DEBUG#define Log(...) NSLog(__VA_ARGS__)#else#define Log(...) /* */#endif

三、什么是UIApplication
UIApplication对象是应用程序的象征
每一个应用都有自己的UIApplication对象,而且是单例的
通过[UIApplication sharedApplication]可以获得这个单例对象,一个iOS程序启动后创建的第一个对象就是UIApplication对象
利用UIApplication对象,能进行一些应用级别的操作

UIApplication有个功能十分强大的openURL:方法
- (BOOL)openURL:(NSURL*)url;
openURL:方法的部分功能有
打电话
UIApplication *app = [UIApplication sharedApplication];
[app openURL:[NSURL URLWithString:@”tel://10086”]];
发短信
[app openURL:[NSURL URLWithString:@”sms://10086”]];
发邮件
[app openURL:[NSURL URLWithString:@”mailto://12345@qq.com”]];
打开一个网页资源
[app openURL:[NSURL URLWithString:@”http://www.apple.com.cn“]];
打开其他app程序
所有的移动操作系统都有个致命的缺点:app很容易受到打扰。比如一个来电或者锁屏会导致app进入后台甚至被终止

还有很多其它类似的情况会导致app受到干扰,在app受到干扰时,会产生一些系统事件,这时UIApplication会通知它的delegate对象,让delegate代理来处理这些系统事件

delegate可处理的事件包括:
应用程序的生命周期事件(如程序启动和关闭)
系统事件(如来电)
内存警告
……


UIApplication的delegate方法
// app接收到内存警告时调用
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application;
// app进入后台时调用(比如按了home键)
- (void)applicationDidEnterBackground:(UIApplication *)application;
// app启动完毕时调用
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions;

启动过程:
程序加载完毕->application:
didFinishLaunchingWithOptions:

程序获取焦点->applicationDidBecomeActive

程序进入后台->applicationDidEnterBackground

程序失去焦点->applicationWillResignActive

程序从后台回到前台
->applicationWillEnterForeground:

内存警告,可能要终止程序->applicationDidReceiveMemoryWarning:

程序即将退出->applicationWillTerminate

启动流程:
打开程序->执行main函数->执行UIApplicationMain函数
->初始化UIApplication(创建和设置代理对象,开启事件循环)
->监听系统事件 | 结束程序
这里写图片描述

1 0
原创粉丝点击