iOS 关于window释放
首先明确 Window这个含义
通俗的讲 比如
- mac下的桌面 是一切控件的承载器
- windows 下的桌面也是类似的属性
iOS应用程序里 一个app 不一定只有一个window
怎么看app里面的Window的个数[UIApplication sharedApplication].windows
下面重点 一般什么时候会用到释放window ?
重新登陆 一般同学写 肯定是
app.window.rootViewController = [[ViewController2 alloc]init];
事实上这样只是重置了window 在arc下也不可能以为释放 按c理解以前rootViewController已经泄漏了
那么正确的释放方式如下
AppDelegate * app = [UIApplication sharedApplication].delegate ;
//释放
app.window.rootViewController = nil;
[app.window resignKeyWindow];
[app.window removeFromSuperview];
//重新加载window
app.window = [[UIWindow alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
app.window.rootViewController = [[ViewController2 alloc]init];
//刷新Window视图
[app.window makeKeyAndVisible];