CATiledLayer从多个线程调用drawRect - 这意味着我的模型需要是线程安全的。它不是 - 并且使线程安全至少可以说是“乏味的”(无论如何线程都是邪恶的: - )
有人知道如何让CATiledLayer只在主线程上调用drawRect吗?
如果不这样做,有没有人知道我如何拥有一个任意大的视图/层(即没有后备存储内存限制。)
由于
克雷格
答案 0 :(得分:0)
没有办法让CATiledLayer在主线程上调用drawRect。请注意,这个图层执行多线程的原因是:iOS中的绘图速度非常慢,因此它会尝试使用所有处理器内核。
我不确定支持商店大小目前是否有硬限制(它存在但事情可能已经改变)。无论如何,内存是移动设备中有限的资源,如果覆盖drawRec,则不能有任意大视图。您应该使用平铺仅显示当前可见的内容或使用CAShapeLayer等绘图。
答案 1 :(得分:0)
CATiledLayer有一个私有的类方法
+ (BOOL)shouldDrawOnMainThread;
所以你可以覆盖并返回YES。然后所有绘图周期将在主线程上执行。
这样的代码段
+ (BOOL)shouldDrawOnMainThread
{
return YES;
}