.pch文件及UIApplication及Appdelegate及状态栏及程序启动的完整过程

时间:2021-10-04 19:45:27

一.pch文件以前xcode创建的同时会自动创建,但是之后的.pch文件要自己手动创建。现在之所以没有,是因为pch文件定义的是全局的,所以加载的时间和效率受到影响,现在都是自己创建。

pch文件的作用,就是

1)可以定义一些全局都需要的宏(整个项目都用的上的宏)

2)用来包含一些全部的头文件(整个项目都用的上的头文件)

3)能自动打开或者关闭日志输出功能


在#ifdef __OBJC__ 和#endif 之间定义的宏或者引入的头文件或者日志的输出关闭,都可以写在这里面,尽量不要写在外面,因为这之间定义的内容,只能用在.m或者.mm文件中,而定义在外面的内容,则是整个项目都可以用的。

例如:

#ifdef DEBUG //调试阶段

#define DLog(...) NSLog(__VA__ARGS__) 

#else  //发布阶段

#define DLog(...)

#endif

调试阶段,肯定是需要打印的,系统会自动定义一个DEBUG的宏

发布阶段,写好的代码生成ipa等压缩文件,上传到AppStore上,安装到用户设备上,系统会删除叫做DEBUG的宏


二.iOS7中的状态栏

1.从iOS7开始,系统提供了2种管理状态栏的方式

1)通过UIViewController管理(每一个UIViewController都可以拥有自己不同的状态栏),默认情况下是这种方式管理

- (UIStatusBarStyle)preferredStatusBarStyle {

    

    returnUIStatusBarStyleDefault;

}


- (BOOL)prefersStatusBarHidden {

    

    returnYES;

}


2)通过UIApplication管理(一个应用程序的状态栏都由它来管理)


    UIApplication *app = [UIApplicationsharedApplication];

    [app setStatusBarHidden:YESwithAnimation:UIStatusBarAnimationFade];

//    app.statusBarHidden = YES;

    app.statusBarStyle =UIStatusBarStyleLightContent;

但是前提是需要设置info.plist文件,添加一个字段,View controller-based status bar appearance ,改为YES,就可以了


三、

    //设置应用图标上的数字,0代表清除图标右上角的数字

    app.applicationIconBadgeNumber =0;

    //设置显示联网状态

    app.networkActivityIndicatorVisible =YES;


//URL :一个资源的唯一路径

    //URL的组成=协议头://主机域名/路径

    //网络资源URL的组成 =http://wwww.baidu.com/wanghuan.png

    //本地文件资源URL的组成 =file:///Users/apple/Desktop/3.png

    [app openURL:[NSURLURLWithString:@"http://www.baidu.com"]];

    

    [app openURL:[NSURLURLWithString:@"tel://10086"]];



四、

/**

 *  app进入后台的时候调用

 *   一般在这里保存应用的数据,包括游戏数据,比如暂停游戏等

 */

- (void)applicationDidEnterBackground:(UIApplication *)application


五、程序启动完整过程

1.main函数

2.UIApplicationMain  创建UIApplication对象,创建UIApplication的delegate对象

3.delegate对象开始处理(监听)系统事件(没有storyboard的情况),程序启动完毕的时候,就会调用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions,这个方法,在这个方法中创建UIWindow,创建和设置UIWindow的rootViewController,然后显示窗口

4.根据info.plist获得最主要storyboard的文件名,加载最主要的storyboard(有storyboard的情况),创建UIWindow,创建和设置UIWindow的rootViewController,然后显示窗口