iOS 崩溃问题处理 UIViewController初始化没有 init 导致的 Bug

先看错误信息

*** Assertion failure in UITraitCollection * _Nonnull _UIGetCurrentFallbackTraitCollection(void)(), /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKitCore_Sim/UIKit-3899.13.13/_UIFallbackEnvironment.m:91

看到错误信息搜了一下,发现是有nil所以出现的问题,但是这个项目已经上线多年,代码也都是以前的神人留下的,不知道哇,懵啊,以为是第三方库老了出问题了
我都准备好要跟公司申请重构了啊,因为代码里全是xib啊,适配问题也是很让人头疼
好在google搜到一个类似的解决方案啊,链接放一下
https://cloud.tencent.com/developer/article/1536425
然后我就根据这个,排查了一下我代码中的alloc没有init的
然后就找到了这个

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        QCSlideViewController *slideSwitchVC = [[[QCSlideViewController alloc] setPageNum:pageNum] init] ;
        [slideSwitchVC.view setFrame:CGRectMake(0, 0, 1, 1)];
        slideSwitchVC.contentSizeForViewInPopover = CGSizeMake(1, 1);
        [FxLog error:@"第一个"];
        self.navSlideSwitchVC = [[UINavigationController alloc] initWithRootViewController:slideSwitchVC];
    }
    return self;
}

这是个什么鬼啊,init之前set啥啊

 [[[QCSlideViewController alloc] setPageNum:pageNum] init] ;

又找到了代码

- (QCSlideViewController *)setPageNum:(int)num{
    pageNum = num;
    [self.view setFrame:CGRectMake(0, 0, 0, 0)];
    return self;
}

确实不太对啊,我改了试试看

QCSlideViewController *slideSwitchVC = [[[QCSlideViewController alloc] init] setPageNum:pageNum];

再运行试一下,成了!!!!我的天啊!!!!
不知道是不是iOS13.3的原因让这个问题出现了,以前真的没有任何问题的呀
就写这么些吧,重构可以再拖一拖了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容