我面对一个非常奇怪的错误。我有一个按钮,我正在使用segues正常推动视图控制器。然而,当我按下视图控制器时,整个应用程序布局都会混乱:它有时会起作用,有时会出现故障,比如让我只看到一个空白视图,除了tabbar,或者之前的视图控制器仍然被看到但转换到屏幕中的其他位置如果我设法回去,第一次尝试后总是正常工作。以下是一些观察结果:
- 问题特定于设备(iPhone X)。模拟器(即使是相同的型号和相同的操作系统版本)也能很好地工作。
- 切换到模态并不重要。 "毛躁的样子"动画有点不同,但问题仍然存在。
- 在转换中关闭动画并不重要。它立即呈现出一个微不足道的屏幕,没有动画。
- 从代码推送/呈现视图控制器(而不是故事板segue)并不重要。完全相同。
- 在呈现视图控制器之前点击按钮后给出延迟(例如半秒)并不会改变任何事情。无论出于何种原因,只是想试试看看是否存在一些竞争条件。
- 问题特定于一个视图控制器。在相同的segue / state中呈现任何其他内容并不会导致任何问题。
- 有问题的视图控制器根本没有任何特殊之处:它实际上只是一个包含三个子视图控制器的包装器,我通常会这样做:
- 当我试图展示有问题的控制器时,我总是得到这个奇怪的日志:
[Render] CoreAnimation: failed to allocate 1223558576 bytes
- 我的应用程序肯定不会内存不足。它在问题发生时在iPhone X上使用~50MB。它是一款媒体应用,在拍摄/过滤视频等时可以分配~500MB,没有任何问题或崩溃。
- 如果存在特定的嵌入式视图控制器(三个中的第二个),则会出现问题。例如,如果我将嵌入segue移除,那么它似乎运行得很好。
- 嵌入式视图控制器是一个简单的
UIViewController
子类,只有一个表视图和一些单元格。
可能会发生什么?