Xcode 真机调试黑屏的问题

使用 Xcode 11.2.1 新建项目默认为将编译运行目标设置到最新的 iOS 13。除了 AppDelegate 中新引入的 Scene 场景会有些兼容性的警告提示外,还有个奇怪的问题是应用编译到真机上调试时,Launch Screen 之后便是黑屏,没有按预期展示 main.storyboard 的内容。

而 Simulator 上是没有黑屏问题的。

注意到此刻控制台有如下提示:

The app delegate must implement the window property if it wants to use a main storyboard file

那么问题就很明显了,生成的模板代码中 AppDelegate 缺少 window 属性的声明。

解决办法就是打开 AppDelegate.h 补上如下代码:

@property (strong, nonatomic) UIWindow *window;

再次编译后运动就正常了。

super 方法的缺失

常见导致黑屏的还有个原因是复写父类方法时没有正确调用 super。

比如常见的做法是在 loadView 中进行视图的初始化,但这个方法是需要先调用父类的该方法的,不然会渲染不正确导致黑屏。

- (void)loadView {
  [super loadView];
  // ...
}

相关资源