刚才调试的时候除了一些小问题,有一段代码要重用

    NSString *key = @"CFBundleVersion";
// 取出沙盒中存储的上次使用软件的版本号
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *lastVersion = [defaults stringForKey:key]; // 取出当前版本号
NSString *currentVersion = [NSBundle mainBundle].infoDictionary[key];
ETLog(@"%@===%@=================",self.window,application.keyWindow);
if ([lastVersion isEqualToString:currentVersion]) { application.keyWindow.rootViewController = [[ETTarBarControllor alloc] init];
}
else{
application.keyWindow.rootViewController = [[NewFeatureViewController alloc] init];
[defaults setObject:currentVersion forKey:key];
[defaults synchronize];
}

本来是要抽取出来的,然后在工具类里面用[UIApplication sharedApplication].keyWindow.rootViewController替代原来的self.window.rootViewController,但是发现,用真机调试的时候出现黑屏,无法正常显示,我当时就觉得奇怪,不就是把代码的位置换了吗,后来我把Appdelegate的self.window.rootViewController换成

application.keyWindow.rootViewController,发现还是不行,我那个郁闷啊,后来同样的代码我再虚拟机上运行,妈蛋,可以运行,我就一定在真机上调试,于是,我又回到真机上,我吧application.keyWindow 和 self.window打印出来,注意,这是在真机上,发现appapplication.keyWindow 为空,self.window有值,于是,我吧[self.window makeKeyAndVisible];放到调用application.keyWindow的前面,居然可耻的有值了,真机上也可以运行了,但是不知道什么原因,可能是application的生命周期有关把,那个朋友知道什么原因的说一下啊,就这样一个莫名的bug大致搞定。

oc学习之路----application.keyWindow.rootViewController与self.window.rootViewController与[self.window makeKeyAndVisible];小发现的更多相关文章

  1. oc学习之路----APNS消息推送从证书到代码(2015年4月26号亲试可用)

    前言:看这篇博客之前要准备:首先的有一个99刀的个人开发者账号或者199刀的企业开发者账号,其次你用的是apns消息推送,(本人之前四处打听有没有其他消息推送的方法:收获如下:首先如果想做到apns的 ...

  2. oc学习之路----代理模式

    今天刚学完oc的代理模式,觉得有点新奇,第一次接触,原理 A完成一件事,但是自己不能完成,于是他找个代理人B 替他完成这个事情,他们之间便有个协议 (protocol),B继承该协议来完成A代理给他的 ...

  3. oc学习之路----scrollView的代理模式

    右图是OC里面scrollView的代理的描述,从这里可以开出来,任何对象都可以作为scorllView的代理对象只要实现了UIScrollViewDelegate这个协议,为什么呢,原因要追究到UI ...

  4. oc学习之路----多级指针的使用和内存分析

    ---恢复内容开始--- 精髓:要熟悉指针的使用,首先要熟悉指针的各种状态存得是什么数据.(以一级指针 int *p1 二级指针:int **p2 三级指针:int ***p3为例) 一级指针:*p1 ...

  5. oc学习之路----QQ聊天界面

    用到的技术:自定义cell,通知机制,代理模式 transform 1.自定义cell(通过代码自定义cell) ①首先新建一个类继承UITableViewCell ②重写initWithStyle: ...

  6. oc学习之路----代理模式2-使用步骤

    之前已经写过一个个人关于代理模式的一些看法,现在就来总结一下使用代理模式的步骤吧. 1.先搞清楚谁是谁的代理(delegate) ● 2.定义代理协议,协议名称的命名规范:控件类名 + Delegat ...

  7. oc学习之路----通过代码自定义cell

    需求背景:由于tableView中每一个cell的数据与布局都不一样,故不能用xib实现功能,这是用代码写自定义cell就有必要了. 步骤 1.新建一个继承自UITableViewCell的类 2.重 ...

  8. oc学习之路----内存管理

    直接上图啊.

  9. oc学习之路-----搞死指针之内存存储int类型

    关于每个数据类型个字节在内存中的存储地址(以int为例) 先上图 如题,为什么说好的*p = &c是1啊,为什么是513呢,一开始,我也觉得挺惊讶的,后面听老师分析了一下才知道怎么回事,但是还 ...

随机推荐

  1. 织梦dede_archives文章主表详细介绍

    dede_archives文章主表,存放着各频道文章的主要信息,比如创建时间,所属栏目,所属频道,作者等详细的信息.     ID int(11) 自动编号typeid int(11) 所属主栏目编号 ...

  2. Decision Boundaries for Deep Learning and other Machine Learning classifiers

    Decision Boundaries for Deep Learning and other Machine Learning classifiers H2O, one of the leading ...

  3. SEO 网站页面SEO优化之页面title标题优化

    在seo优化中,标题的优化占着举足轻重的地位,无论是从用户体验的角度出发,还是从搜索引擎的排名效果出发,title标题都是页面优化最最重要的因素.笔者总结了优化title标题应该注意的六个方面: ①. ...

  4. 使用 DiskMaker X 轻松制作 Yosemite 安装 U 盘(引)

    使用 DiskMaker X 轻松制作 Yosemite 安装 U 盘 由于帮人在MacBook上装Windows, 用pe格式化了一下分出来的Windows分区, 搞得Mac系统也瘫掉了, 无奈之下 ...

  5. github Git 原理简介

    由于Git是一个DVCS(Distributed Version Control System,分布式版本控制系统),不同于传统的CVS/SVN版本系统那样必须由一个中央服务器来管理所有的版本记录,它 ...

  6. Java中堆和栈创建对象的区别

    http://blog.csdn.net/hbhhww/article/details/8152838

  7. 选择排序SelectSort

    /** * * @author Administrator * 功能:选择排序法 */ package com.test1; import java.util.Calendar; public cla ...

  8. Android 各个版本WebView

    转载请注明出处   http://blog.csdn.net/typename/ powered by miechal zhao : miechalzhao@gmail.com 前言: 根据Googl ...

  9. 函数xdes_find_bit

    使用方法 free = xdes_find_bit(descr, XDES_FREE_BIT, TRUE,hint % FSP_EXTENT_SIZE, mtr); /**************** ...

  10. 关于“javax.servlet.include.request_uri”属性值

    在springMVC的DispatcherServlet类的doService方法中有如下代码: if (WebUtils.isIncludeRequest(request)) { attribute ...