以下场景都基于iOS13 beta iphone
,后续发现新的问题持续更新
问题一
场景:一个基于自定义window
的弹窗视图,点击其中的某个选项之后,通过路由跳转到新的视图控制器
iOS13:未跳转到新的视图控制器
iOS13之前:功能正常
分析原因
对iOS13和iOS13之前的设备进行了debug
,发现在iOS13之前,使用[UIApplication sharedAplication].keyWindow
获取到的就是最开始创建的window
。但是iOS13之后keywindow
并不是最开始创建的window
, 而是当前显示的window。
https://stackoverflow.com/questions/57134259/how-to-resolve-keywindow-was-deprecated-in-ios-13-0
'keyWindow' was deprecated in iOS 13.0: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
解决办法
[UIApplication sharedApplication].keyWindow -> [UIApplication sharedApplication].windows[0]
问题二
该段代码在iOS13之前运行正常,iOS13之后crash,大致的crash日志如下
[Assert] UITableViewHeaderFooterView's contentView must remain a direct subview of it. Unexpected superview of the contentView: (null)
[Assert] UITableViewHeaderFooterView's contentView must remain a direct subview of it. Unexpected superview of the contentView:
-[UITableView tableViewStyle]: unrecognized selector sent to instance 0x10b69ce00
分析原因
上述日志已然很清楚,就不重复累赘
这块代码返回contentView
也不恰当
解决办法
view.contentView -> view