获取错误:使用未解析的标识符' NSRectFill',但__NSRectFill有效,为什么?

时间:2017-10-29 23:41:14

标签: swift xcode

我是Swift 4的新手,在Xcode中进行编码9.尝试创建一个非常简单的MacOS绘图应用程序,只是为了更多地了解Swift。我复制了一些非常简单的教程代码,但是收到错误"使用未解析的标识符' NSRectFill'。我注意到编译器暗​​示我使用__NSRectFill并且这有用......但为什么呢?我做错了吗?

import Cocoa

class GraphView: NSView {

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        NSColor.white.setFill()
        NSRectFill(bounds)
    }
}

1 个答案:

答案 0 :(得分:13)

从Swift 3开始,NSRectFill已成为NSRect / CGRect的方法。所以你应该调用bounds.fill()

尽管如此,它可能仍然依赖于某些Core Foundation例程,如__NSRectFill。避免使用那些双重强制函数会更好,因为它们是低级别的系统内容(文档记录很少)(至少是公开的)。