有人可以解释'CoreAnimation:timed out fence'日志消息吗?

时间:2013-08-21 18:06:09

标签: ios cocoa-touch core-animation

我收到了一份关于我们的iPad应用程序崩溃的报告,附带了一条日志消息。日志消息的最后几行如下:

Aug 21 08:58:51 2TesterPad backboardd[26] <Warning>: CoreAnimation: timed out fence 25993
Aug 21 08:58:51 2TesterPad backboardd[26] <Warning>: CoreAnimation: updates deferred for too long
Aug 21 08:58:52 2TesterPad AppName[2428] <Warning>: CoreAnimation: failed to receive fence reply: 10004003

有人能告诉我这些日志消息的意思吗?我一直无法在网上找到任何有关此信息的好消息。

2 个答案:

答案 0 :(得分:10)

这通常意味着核心动画操作已经排队,但已经等待太长时间并且超时。

要检查的一些事项:

  • 确保您在任何-viewDidAppear-viewWillAppear
  • 上调用超级方法
  • 确保在通过-viewDidAppear
  • 显示视图之前未执行动画
  • 检查您是否只与主线程上的UI进行交互。当在后台线程上执行相关代码时,我在显示UIAlertView时看到了等待栅栏消息的问题。您可以通过将代码放在一个块中并将其发送到主线程来确保,例如
  • 如果您的UIScollView有很多子视图,并且您为UIScrollView设置了动画,则可能会发生这种情况。在这种情况下,它将为其所有子视图设置动画,即使这些子视图不在屏幕上也是如此。请参阅此答案:https://stackoverflow.com/a/10938889/257550。解决这个问题的一个解决方案是重新设计视图以使用UITableView,以确保只有可见单元格中的子视图被动画化。

    dispatch_async(dispatch_get_main_queue(), ^{
    
        UIAlertView *alert = 
           [[UIAlertView alloc] initWithTitle:@"title", 
                                       mssage:@"message"
                                     delegate:nil 
                            cancelButtonTitle:@"OK"
                            otherButtonTitles:nil];
    
        [alert show];
    });
    

答案 1 :(得分:2)

首先,我要感谢Michael G.Emmons的回答。这让我朝着正确的方向前进。

问题是,我在(listView)viewWillApear中调用服务,而在(detailsView)中我保存了详细信息(服务被调用),dismissAlert有动画,当回到列表屏幕时(再次)动画被称为。为了一些原因而堆积起来并抛出这个警告。该设备用于在Xcode控制台中挂起而没有任何日志消息,并且很难调试。

适用于iOS(7),在iPhone 6模拟器及以上版本中存在iOS 8问题。

我有类似的问题,我的控制台日志是: :CoreAnimation:超时围栏e025 :CoreAnimation:未能收到围栏回复:10004003

解决方案:我将代码(服务调用)从viewWillAppear适当移动到viewDidAppear并删除了不必要的(动画)。

它解决了我的问题。我希望它有所帮助。