所以,如此答案和iOS 4.0版本说明中所述,UIKit现在具有一些线程安全的绘图功能:
据我所知,除了在
我认为,在主线程上创建图像上下文,然后启动后台方法会是一个非常糟糕的想法,因为会有很多竞争条件。
那么,我该如何使用iOS 4中引入的基于UIKit的多线程绘图功能?还有其他获得活动UIKit图形上下文的方法吗?
附言:我知道我可以使用Core Graphics进行绘制并完成它。由于各种原因(遗留代码),我想继续使用基于UIKit的绘图方法。
这很棒,但是怎么使用呢?使用UIKit绘制图形上下文现在是线程安全的。 具体而言:
- 用于访问和操作图形上下文的程序现在可以正确处理位于不同线程上的上下文。
- 字符串和图像绘制现在是线程安全的。
- 在多个线程中使用颜色和字体对象现在是安全的。
据我所知,除了在
-drawRect:
内部以外,在任何时候,如果你通过UIGraphicsBeginImageContext()
或UIGraphicsPushContext()
创建自己的上下文,就只能使用UIKit/UIGraphics进行绘制,但是根据文档,这些函数不是线程安全的,并且-drawRect()
总是在主线程上调用。我认为,在主线程上创建图像上下文,然后启动后台方法会是一个非常糟糕的想法,因为会有很多竞争条件。
那么,我该如何使用iOS 4中引入的基于UIKit的多线程绘图功能?还有其他获得活动UIKit图形上下文的方法吗?
附言:我知道我可以使用Core Graphics进行绘制并完成它。由于各种原因(遗留代码),我想继续使用基于UIKit的绘图方法。
NSString drawInRect:withFont:
中崩溃。这很让人烦恼,因为它不容易重现,但每当它崩溃时,它就在那里。我正在努力弄清楚我是否做错了什么,或者这只是永远无法解决的问题。 - Amy Worrall