【Demo 0001】iPhone程序运行过程

本章学习要点:

      1.  掌握iPhone应用程序运行过程

      2.  掌握 iPhone应用程序生命周期

      3. 了解代码工程结构.

  一、iPhone 应用程序运行过程

     NewImage

    如上图所示,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

三、代码工程结构

         Tmp1b5f8216

         在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 存入工程输出文件

 四、参考资料
    http://justsee.iteye.com/blog/1592553           讲的非常全面

演求代码

 

posted @ 2013-06-12 12:18  zTercel  阅读(282)  评论(0编辑  收藏  举报