【发布时间】:2023-03-02 23:32:01
【问题描述】:
我遇到以下警告的问题:
CoreAnimation:警告,删除了未提交 CATransaction 的线程;在环境中设置 CA_DEBUG_TRANSACTIONS=1 以记录回溯。
我正在使用 NSOperation 对象来执行一些计算,一旦完成,它会向 AppDelegate 发送一条消息,然后隐藏进度条并取消隐藏一些按钮。如果我将消息注释回 AppDelegate,则警告会消失,但进度条显然仍然可见且具有动画效果。
我正在使用 xCode 4.4.1 和 OSX 10.8.1,但是,当我在 OSX 10.7.4 上使用相同版本的 xCode 编译和运行代码时,我没有收到警告并且代码按预期运行。
设置 CA_DEBUG_TRANSACTIONS=1 环境变量显示回溯来自 AppDelegate 中的 NSControl setEnabled 消息。
答案可能是盯着我的脸,但也许我喝了太多咖啡!
【问题讨论】:
-
我今天一直在玩这个。我怀疑问题是 NSOperation 在 CoreAnimation 完成重绘 UI 元素之前完成。回溯显示该方法最初是从 NSOperation 调用的。我尝试从 NSOperation 实现一个 NSNotification 来告诉 AppDelegate 计算完成,希望这意味着可以在不影响 CoreAnimation 的情况下释放 NSOperation,但是警告仍然出现,但这次来源是 CoreFoundation?
-
在这两种情况下,程序似乎都按预期运行,并且警告仅在 OS 10.8.1 或 10.8.2 上运行时显示
标签: multithreading core-animation nsoperation catransaction