CATiledLayer从多个线程调用drawRect -这意味着我的模型需要是线程安全的。它不是--至少可以说,让它线程安全是“单调乏味的”(而且线程无论如何都是邪恶的:)
有谁知道让CATiledLayer只在主线程上调用drawRect的方法吗?
如果做不到这一点,谁知道我怎么会有一个任意大的视图/层(即没有后备存储内存限制)。
谢谢
克雷格
发布于 2013-11-20 01:01:40
没有办法让CATiledLayer在主线程上调用drawRect。请注意,这一层执行多线程是有原因的:在iOS中绘制非常慢,因此它尝试使用所有处理器核心。
我不确定目前是否存在对后备存储大小的硬限制(它是存在的,但情况可能已经发生了变化)。无论如何,内存在移动设备中是有限的资源,如果你覆盖drawRec,你不可能有任意大的视图。您应该使用平铺来仅显示当前可见的内容,或者使用CAShapeLayer之类的工具进行绘制。
发布于 2014-02-12 14:51:07
CATiledLayer有一个私有的类方法
+ (BOOL)shouldDrawOnMainThread;所以你可以重写并返回YES。然后,所有绘制周期都将在主线程上执行。
像这样的代码片段
+ (BOOL)shouldDrawOnMainThread
{
return YES;
}https://stackoverflow.com/questions/20076806
复制相似问题