为什么这个CATiledLayer/PDF代码速度慢?

jbm*_*jbm 8 pdf iphone performance catiledlayer

这是代码:

https://www.dropbox.com/s/o42wy36x4qhrbpt/PDFScroller.zip

我采用了WWDC 2010 PhotoScroller示例代码,该代码实现了嵌套UIScrollViews用于缩放,内部UIScrollView用于分页,并且换掉了我认为显示多页PDF而不是图像所需的最少量代码.

有用.但是我的iPhone4上的速度很慢,第一页画的时间大约是三秒钟,而我的iPod Touch则更慢.我可以看它画个别瓷砖.这个相同的PDF已经打开得更快,没有可见的平铺图,在CATiledLayer我的替代实现中,它只使用单个CATiledLayer/ UIScrollView和触摸事件来更改页面.我想用这种PhotoScroller技术,非常好.

我用仪器中的CPU Sampler观察它,它似乎不是PDF渲染代码,看起来时间在线程和消息传递中占用.如果有人可以帮助指出这个样本正在做什么来招致开销,我会很感激.

谢谢,

吉姆


更新1:我最初使用了TilingView定义示例代码中的类技术

+ (Class) layerClass {
  return [CATiledLayer class];
}
Run Code Online (Sandbox Code Playgroud)

然后- (void)drawRect:(CGRect)rect插入但切换到显CATiledLayer式子类作为第一次尝试,看它是否会产生影响,但它没有,所以我留下代码原样在这里发布.[tiledLayer release];TilingView中也有漏掉的漏洞.