首页 > 代码库 > keyWindow与delegate中Window的区别
keyWindow与delegate中Window的区别
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
keyWindow与delegate中Window的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。