本章学习要点:
1. 掌握iPhone应用程序运行过程
2. 掌握 iPhone应用程序生命周期
3. 了解代码工程结构.
一、iPhone 应用程序运行过程
如上图所示,iPhone应用程序总是从main开始经过UIApplicationMain函数进入UIKit框架,此函数将完成三件事:
1. 创建应用程序对象;
2. 启动消息事件循环;
3. 绑定应用程序代理类;从而将程序事件分发到上层代码中。
二、iPhone应用程序生命周期
1. 创建iOS 》Empty application工程后,通过Symbol Navigator 可以找到AppDelegate类中包括6个方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
描述:程序完成启动开始创建视图
- (void)applicationWillResignActive:(UIApplication *)application
描述:程序将进入未激活状态
- (void)applicationDidEnterBackground:(UIApplication *)application
描述:程序进入后台
- (void)applicationWillEnterForeground:(UIApplication *)application
描述:程序将进入前台
- (void)applicationDidBecomeActive:(UIApplication*)application
描述:程序处于激法状态
- (void)applicationWillTerminate:(UIApplication *)application
描述:程序将退出
2. 分别插入日志代码到以上各方法内;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// …
NSLog(@"applicationDidFinishLaunching");
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application
{
NSLog(@"applicationWillResignActive");
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSLog(@"applicationDidEnterBackground");
}
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSLog(@"applicationWillEnterForeground");
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
NSLog(@"applicationDidBecomeActive");
}
- (void)applicationWillTerminate:(UIApplication *)application
{
NSLog(@"applicationWillTerminate");
}
3. 测试并分析程序调用过程
a. 程序启动后显示
2013-06-12 16:11:00.994 Demo0001[3974:c07] applicationDidFinishLaunching
2013-06-12 16:11:00.995 Demo0001[3974:c07] applicationDidBecomeActive
程序启动后,并进入激活状态
b. 按下Home键后显示
2013-06-12 16:12:43.806 Demo0001[4016:c07] applicationWillResignActive
2013-06-12 16:12:43.807 Demo0001[4016:c07] applicationDidEnterBackground
程序先进入非激法状态再切入到后台
c. 点击程序图标后显示
2013-06-12 16:13:00.609 Demo0001[4016:c07] applicationWillEnterForeground
2013-06-12 16:13:00.610 Demo0001[4016:c07] applicationDidBecomeActive
程序切入到前台并进入状态
d. 锁屏后显示
2013-06-12 16:13:16.478 Demo0001[4016:c07] applicationWillResignActive
2013-06-12 16:13:16.478 Demo0001[4016:c07] applicationDidEnterBackground
程序进入非激活状态并进入后台
e. 解锁后显示ß
2013-06-12 16:13:27.502 Demo0001[4016:c07] applicationWillEnterForeground
2013-06-12 16:13:27.503 Demo0001[4016:c07] applicationDidBecomeActive
三、代码工程结构
在Demo0001项目创建后,系统自动创建了3个文件夹:
1. Demo0001 存放代码以及配置文件的地方;
在此文件夹中有一个supporting Files文件
Demo0001 - info.plist - 工程配置字典
infoPlist.strings - 多国语言文件
Demo0001-Prefix.pch - 预编译文件
Default.png - 显示在iPhone主界面中的ICON, 针对iPhone4以前(320*480);
Default@2x.png - 显示在iPhone主界面中的ICON, 针对iPhone4, 4S(640x960)
Default-568@2x.png - 显示在iPhone主界面中的ICON, 针对iPhone5以前(640x1136)
2. Frameworks 存放工程中用到的框架库文件;
3. Products 存入工程输出文件