keyWindow与delegate中Window的区别

源码:

//
// ViewController.m
// UIWindowRelated
//
// Created by YouXianMing on 14/10/25.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"-------");
NSLog(@"%@", [UIApplication sharedApplication].keyWindow);
NSLog(@"%@", [[[UIApplication sharedApplication] delegate] window]);
} - (void)viewDidAppear:(BOOL)animated {
NSLog(@"#######");
NSLog(@"%@", [UIApplication sharedApplication].keyWindow);
NSLog(@"%@", [[[UIApplication sharedApplication] delegate] window]);
} @end

结果如下图:

从打印结果中可以知道:

keyWindow与delegate中的window其实是一样的,keyWindow的存在的意义,其实就是为了说明当前的window接管了这个控制器的view而已,你可以在keyWindow上加载你自己的建立的view了。

现在提供一个便利的类目^_^:

//
// UIWindow+Window.h
// Window
//
// Created by YouXianMing on 14-10-10.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import <UIKit/UIKit.h> @interface UIWindow (Window) /**
* 返回keyWindow(如果keyWindow有值,代表着你可以给window添加view了)
*
* @return 可以添加view并显示出来的window(如果返回为nil,说明你不能将view添加到window上去显示)
*/
+ (UIWindow *)usableWindow; /**
* 返回window
*
* @return window(你给这个window添加的view很有可能被控制器的view覆盖而显示不了)
*/
+ (UIWindow *)rootWindow; @end
//
// UIWindow+Window.m
// Window
//
// Created by YouXianMing on 14-10-10.
// Copyright (c) 2014年 YouXianMing. All rights reserved.
// #import "UIWindow+Window.h" @implementation UIWindow (Window) + (UIWindow *)usableWindow
{
return [UIApplication sharedApplication].keyWindow;
} + (UIWindow *)rootWindow
{
return [[[UIApplication sharedApplication] delegate] window];
} @end

最新文章

  1. wepack+sass+vue 入门教程(三)
  2. Android实现双击事件的两种方式
  3. 【Beta版本】七天冲刺集结令
  4. 【poj1067】 取石子游戏
  5. 查看Linux硬件配置信息
  6. 自定的 HttpModule 为什么总是执行两次
  7. Eclipse启动的时候窗口一闪就关的解决办法(转)
  8. 【BZOJ】【2844】albus就是要第一个出场
  9. 李洪强iOS开发之【零基础学习iOS开发】【01-前言】02-准备
  10. 项目管理工具:Maven使用方法总结
  11. lc面试准备:Reverse Bits
  12. Eclipse使用技巧总结(一)
  13. Elegant Box主题wpdb::prepare() 报错[已解决]
  14. Codeforces Round #364 (Div. 2)C. They Are Everywhere(尺取法)
  15. UVA12493 - Stars(求1-N与N互质的个数)欧拉函数
  16. Entity Framework入门教程(11)---EF6中的异步查询和异步保存
  17. edit this cookie chrome插件 (HttpAnalyzerStdV3 获取Cookie 后,再用edit this cookie添加cookie)
  18. Linux内核分析——Linux内核学习总结
  19. android measure的时候报空指针
  20. 文档设计也需要坚持DRY原则--支付中心应用部署结构图完善

热门文章

  1. 【广州.NET社区推荐】.NETCore 平台上的日志集成组件 TomatoLog
  2. 二叉查找树 Java实现
  3. C++中指针和引用、数组之间的区别
  4. Oracle 12c 操作 CDB PDB
  5. [HNOI 2018]寻宝游戏
  6. 14.Iterator 和 for...of 循环
  7. 关于SVN提交注释的问题
  8. vue权限路由实现方式总结二
  9. 让自己的程序支持livewriter
  10. python 3.x 爬虫基础---正则表达式