首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >单线程CATiledLayer (替代?)

单线程CATiledLayer (替代?)
EN

Stack Overflow用户
提问于 2013-11-20 00:27:23
回答 2查看 621关注 0票数 0

CATiledLayer从多个线程调用drawRect -这意味着我的模型需要是线程安全的。它不是--至少可以说,让它线程安全是“单调乏味的”(而且线程无论如何都是邪恶的:)

有谁知道让CATiledLayer只在主线程上调用drawRect的方法吗?

如果做不到这一点,谁知道我怎么会有一个任意大的视图/层(即没有后备存储内存限制)。

谢谢

克雷格

EN

回答 2

Stack Overflow用户

发布于 2013-11-20 01:01:40

没有办法让CATiledLayer在主线程上调用drawRect。请注意,这一层执行多线程是有原因的:在iOS中绘制非常慢,因此它尝试使用所有处理器核心。

我不确定目前是否存在对后备存储大小的硬限制(它是存在的,但情况可能已经发生了变化)。无论如何,内存在移动设备中是有限的资源,如果你覆盖drawRec,你不可能有任意大的视图。您应该使用平铺来仅显示当前可见的内容,或者使用CAShapeLayer之类的工具进行绘制。

票数 0
EN

Stack Overflow用户

发布于 2014-02-12 14:51:07

CATiledLayer有一个私有的类方法

代码语言:javascript
复制
+ (BOOL)shouldDrawOnMainThread;

所以你可以重写并返回YES。然后,所有绘制周期都将在主线程上执行。

像这样的代码片段

代码语言:javascript
复制
+ (BOOL)shouldDrawOnMainThread
{
    return YES;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20076806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档