1

我正在尝试实现一种类似于 Apple 的 ImageBrowserViewAppearance 示例代码中的技术(位于此处:http: //developer.apple.com/library/mac/#samplecode/ImageBrowserViewAppearance/Introduction/Intro.html),其中CALayers 在 IKImageBrowserView 中的项目之上生成,以自定义图像浏览器中对象的外观。

但是,当我打开垃圾收集时,我遇到了一个奇怪的问题,我可以在 Apple 示例代码中重现它。只需在目标中打开垃圾收集,然后构建并启动 ImageBrowserAppearance 示例应用程序。然后,使用“添加照片...”按钮将一些照片添加到图像浏览器。

现在,单击 IKImageBrowserView 的空白部分,然后单击并拖动以开始在浏览器视图中选择多个项目。当您四处拖动选择框时,您应该注意到有时某些项目的图钉和光泽叠加层会闪烁并短暂出现在 IKImageBrowserView 的左下角。所有的 CALayers 似乎偶尔都会这样做,我看到周围的白色滑动区域也闪烁到左下角。

当我在自己的代码中模仿该技术时,我(毫不奇怪)也可以重现此徽章闪烁。但是,当垃圾收集关闭时,这个问题就会消失。

有人知道这里可能出了什么问题吗?我想在我的应用程序中结合这种技术使用垃圾收集,但闪烁有点烦人。

4

2 回答 2

1

不久前我将其添加为书签,但 Apple 更改了 URL 和文本。幸运的是,我在为它添加书签时引用了它

Core Graphics API (Quartz 2D) 发现编译为使用垃圾收集的应用程序的绘图性能降低了大约 25%。

“绘图性能降低 25%”文本已被重写为“代码执行中的轻微开销” 这是针对 10.5。也许苹果在 10.6 中修复了它。你说的是核心动画,而不是核心图形。

尽管如此,Core Animation 最终还是不得不与 Core Graphics 对话,也许这个性能问题还没有消失,而你正在被它所困扰。

于 2010-09-22T04:35:14.827 回答
0

我对此进行了一些愚弄,并且可以确认在打开 GC 的情况下运行项目时我得到了相同的行为。事实上,如果你有足够的耐心,慢慢地用箭头键一次一张地改变选择,最终它会触发行为,你可以看到视图中一张图像的图层显示在左下角而不是在图像的顶部。我无法找到任何关于它何时发生的模式,或者选择哪个图像与哪个图像缺少图层之间的任何关系。我假设无论出于何种原因,这些图层都将它们的帧原点设置为 {0, 0},但如果我知道原因,那就见鬼了。

于 2010-09-22T06:10:54.770 回答