请参见这个简单的CATiledLayer示例https://github.com/seanhess/CATiledLayer-Example

它由一个具有如下层次结构的viewController组成:

view: (frame = window size)
    scrollView: (frame = window size, content size = 200 x 4000)
        contentView: (frame = content size = 200 x 4000, tile size = 100 x 100)

内容视图的图层已被覆盖为CATiledLayer。

如果运行链接的代码,则会看到多次请求具有相同rect的图块。第一次运行代码和滚动时都会发生这种情况。

切换到分支“单栏”-它仅在init上发生,而不会在您向下滚动时发生。

切换到“default-tile-size”分支-它仅在init上发生,但很少发生(您必须多次运行它才能发生)

我正在尝试在drawLayer:inContext:中编写一些代码,以查找正确的数据并进行绘制。这可能会很昂贵,而我不想重复一次。

知道发生了什么吗?我可以做些什么?

最佳答案

这是IOS中的错误。当CPU是双核时会发生这种情况,在这种情况下,有两个线程每个都请求每个图块。这意味着该错误存在于模拟器和iPhone 4S中,但在其他iPhone机型中不存在。我认为它也会出现在双核iPad上。

我早在很久以前就(针对模拟器)向苹果报告了该错误,最近又向苹果(针对iPhone 4S)向该漏洞进行了报告。苹果公司最近给人的印象是他们已经在IOS 6中解决了它。

08-05 21:54
查看更多