设置:
Xcode 6.1
OS X 10.9.5
Swift Mac 基于文档的应用程序目标
问题:
我正在使用Swift创建Cocoa Mac应用程序(而非iOS!)。我有一个自定义的NSView
子类。我想覆盖-drawRect:
,并访问当前的CGContext
,使用CoreGraphics API进行一些绘图。
然而,在Swift中我似乎无法访问当前的CGContext
(在ObjC中我已经做了数百次)。这是我的代码:
import Cocoa
class Canvas: NSView {
override func drawRect(dirtyRect: CGRect) {
if let ctx: CGContext! = NSGraphicsContext.currentContext()?.CGContext {
// do drawing
}
}
}
当我运行时,在我的drawRect
实现的第一行就立即崩溃:
-[NSWindowGraphicsContext CGContext]: unrecognized selector sent to instance 0x60800005e840
我做错了什么?如何在Swift中获取当前的CGContext
以进行绘制?
注意:
我肯定想使用CoreGraphics API。除非在Swift中完全不可能使用CoreGraphics API,请不要回复建议改用AppKit绘图API(即使它们更容易)。我想知道如何在OS X上使用Swift从CoreGraphics进行绘制。
-[NSGraphicsContext CGContext]
是一个10.10的API。正如我所说,我正在10.9上开发(尽管我的目标使用10.10基础SDK)。所以,这就是问题所在。这个问题很蠢,基本上是我写的Swift代码的第一行,所以我还在摸索中,而且我只是假设我在语法上做错了什么。 - Todd Ditchendorf