为什么我的 NSColor 扩展看不到 CGColor?

Why won't my NSColor extension see a CGColor?

这让我感到困惑...我正在尝试为 NSColor 创建一个方便的初始值设定项,它从 CGColor 中创建一个,但出于某些该死的原因,它只是拒绝承认 CGColor存在!我导入了 Cocoa,为了理智,我还导入了 CoreGraphics 甚至 CoreGraphics.CGColor,但仍然没有成功!

谁能告诉我我做错了什么?清理和重建没有帮助...

Xcode 显然在这里行为不端。解决方法:在签名中使用完整类型。

convenience init(_ cgColor: CoreGraphics.CGColor)

正如评论中所说, NSColor 有一个 init(cgColor:) 初始值设定项,可能 使您的问题过时。

但是既然你问的是为什么它不编译: 原因是 NSColor 有一个 CGColor 属性,这与 CGColor 类型冲突。 作为一种解决方法,可以使用 CGColorRef 别名:

extension NSColor {

    convenience init(_ cgColor: CGColorRef) {
        // ...
    }
}

正如 Eric Aya 所说,Xcode 8 beta 4 不存在此问题。原因是 NSColor 属性 已重命名为 cgColor,并且不再与CGColor类型冲突,