UIApplication&程序启动原理

来源:互联网 发布:网络教育统考英语没过 编辑:程序博客网 时间:2024/06/07 11:37

UIApplication

1.单例
UIApplication *app =[UIApplication sharedApplication]
2.UIApplication对象是程序启动后创建的第一个对象
3.主要作用是创建主运行循环(死循环),避免程序一启动就马上关闭利用他可以做一些应用级别的操作
例:

// 注册用户的通知UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge categories:nil];[app registerUserNotificationSettings:setting];//设置应用程序的提醒数字app.applicationIconBadgeNumber = 10;//设置联网状态app.networkActivityIndicatorVisible = NO;//设置状态栏是否隐藏app.statusBarHidden = YES;**用UIApplication来管理状态栏是可以做动画效果的//设置状态栏隐藏动画 [app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide];//设置状态栏的颜色[app setStatusBarStyle: UIStatusBarStyleLightContent animated:YES];// URL:资源全路径// URL:协议头://路径// 根据协议头判断用什么软件去打开:tel:->拨号软件 http: 网页   [app openURL:[NSURL URLWithString:@"http://www.baidu.com"]];

Tip:
一般情况下 状态栏都是由控制器管理

-(BOOL)prefersStatusBarHidden;//设置是否隐藏-(UIStatusBarStyle)preferredStatusBarStyle;//设置状态栏颜色

如下设置info.plist 则取消控制管理 只能UIApplication对象管理
这里写图片描述

UIApplicationDelegate

这里写图片描述

// 应用程序的生命周期方法// 程序加载完毕的时候调用,在这个方法之前,加载info.plist文件,加载启动图片- (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// 当程序接收到内存警告的时候调用 // 清空图片缓存- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

程序启动原理

main ->UIApplicationMain
*****UIApplicationMain底层做的事情*****
1.创建UIApplication对象
2.创建AppDelegate对象 ,并且赋值给UIAppLictaion对象的代理属性
3.开启主运行循环
4.加载info.plist 判断是否指定main.storyboard 如果指定就去加载
5.加载main.storyboard底层

1)先创建UIWindow对象2)加载storyboard,创建控制器3)把新创建的控制器作为窗口的跟控制器 让窗口显示在屏幕上

***没有main.storyboard则代码创建控制器

1.设置rootViewController
2.makeKeyAndVisible

控制器view的加载(loadView)

当第一次用到控制器的view时就会调用loadview方法来创建控制器的view(如果重写 则需要手动创建view)

底层实现
1)判断有没有指定storyboard
2)判断有没有指定的xib
3)如果没有则会直接创建几乎透明的view

1 0
原创粉丝点击