oc学习之路----application.keyWindow.rootViewController与self.window.rootViewController与[self.window makeK...

本文描述了一个iOS应用在真机调试时遇到的黑屏问题及其解决方案。作者通过对比虚拟机和真机的表现,发现了application.keyWindow为空的问题,并最终通过调整代码顺序解决了这一难题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

    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大致搞定。

转载于:https://www.cnblogs.com/superYou/p/4267586.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值