UIApplication&程序启动原理

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值