【问题标题】:CATransaction commit crash because of EXC_BAD_ACCESS由于 EXC_BAD_ACCESS,CATransaction 提交崩溃
【发布时间】:2018-11-25 20:02:13
【问题描述】:

[CATransaction commit]因为EXC_BAD_ACCESS而崩溃,CATransaction是一个类,怎么可能是nil! 我检查了苹果配置文件,我发现苹果解释说“如果当前不存在交易,则引发异常。”,所以我怀疑当前不存在交易。但我不知道如何确定交易是否存在。

【问题讨论】:

  • 如果不包含任何有关您如何初始化和使用CATransaction 的代码,则几乎无法诊断。
  • 现在发现我设置layer.contents = (__bridge id)obj.contentImg.CGImage会导致crash。
  • 我设置了layer.contents,图片太大了{11184832, 20},我觉得太大了会导致崩溃,但是不知道为什么
  • 也许您可以发布部分符号化崩溃日志。
  • 如果您要加载一个那么大的图像,它将在宽色设备上占用 8 x 图像宽度 x 图像高度字节的内存。在您描述的大小下,您可能会因为使用太多内存而被杀死。有一个 WWDC 2018 会议描述了可能有帮助的下采样技术。 developer.apple.com/videos/play/wwdc2018/219

标签: ios objective-c xcode build xcode10


【解决方案1】:

确保您已平衡对[CATransaction begin][CATransaction commit] 的调用

【讨论】:

  • 是的,我在开始之前调用 commit ,它们成对出现
  • [CATransaction begin] 应该在进行更改之前调用,并调用commit 来创建事务。如果您需要刷新任何隐式事务状态,请在begin 之前调用[CATransaction flush]。只是澄清一下,因为您上面的评论正好相反。
猜你喜欢
  • 1970-01-01
  • 2013-03-24
  • 2010-11-18
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
相关资源
最近更新 更多