绘画限制
来源:互联网 发布:excel数据后的空格删掉 编辑:程序博客网 时间:2024/04/28 14:49
绘画限制
Application Kit 在使用它的绘画函数和类时通常是线程安全的,包括
NSBezierPath 和 NSString类。关于使用这些类的详细信息,在以下各部分介绍。关于绘画的额外信息和线程可以查看Cocoa Drawing Guide。
a) NSView限制
NSView 通常是线程安全的,包含几个异常。你应该仅在应用的主线程里面执行对NSView的创建、销毁、调整大小、移动和其他操作。在其他辅助线程里面只要你把绘画的代码放在lockFocusIfCanDraw和 unlockFocus方法之间也是线程安全的。
如果应用的辅助线程想要告知主线程重绘视图,一定不能在辅助线程直接调用display,setNeedsDisplay:,setNeedsDisplayInRect:,或setViewsNeedDisplay:方法。相反,你应该给给主线程发生一个消息让它调用这些方法,或者使用performSelectorOnMainThread:withObject:waitUntilDone:方法。
系统视图的图形状态(gstates)是基于每个线程不同的。使用图形状态可以在单线程的应用里面获得更好的绘画性能,但是现在已经不是这样了。不正确使用图形状
2011-11-28 | © 2011 YouMi Mobile Co. Ltd. All Rights Reserved. [83]
Threading Programming Guide
态可能导致主线程的绘画代码更低效。
b) NSGraphicsContext限制
NSGraphicsContext类代表了绘画上下文,它由底层绘画系统