为什么我的NSColor扩展程序看不到CGColor?
这让我感到困惑......我试图创建一个NSColor
的便利初始值设定项,它使CGColor
中的一个出现,但由于某些原因,它只是拒绝确认存在CGColor
!我已经进口Cocoa
,只是为了理智,我还输入了CoreGraphics
,甚至CoreGraphics.CGColor
,但仍然没有运气!为什么我的NSColor扩展程序看不到CGColor?
谁能告诉我什么,我做错了什么?清理和重建并没有帮助...
正如已经在评论中说, NSColor
有init(cgColor:)
初始化,这可能 使您的问题已经过时了。
但既然你问为什么它不会编译: 的原因是NSColor
有CGColor
特性,以及与CGColor
类型冲突。 作为一种变通方法,可以使用CGColorRef
别名:
extension NSColor {
convenience init(_ cgColor: CGColorRef) {
// ...
}
}
正如埃里克·绫说,这个问题不存在的Xcode 8测试版4的原因,就是NSColor
物业更名为cgColor
,并且不与CGColor
类型冲突,
我也注意到OP的代码在Xcode 8 b4中工作。 Apple似乎已经解决了这个编译器问题。 – Moritz
美丽!感谢所有的知识! –
@EricAya:是的,在Swift 3中,该属性被重命名为'cgColor'。 –
Xcode在这里显然是行为不当。解决方法:在签名中使用完整类型。
convenience init(_ cgColor: CoreGraphics.CGColor)
感谢您的快速回答! –
我认为这个解决方案比@ MartinR更好,因为它不依赖于一个typealias的可用性,因此更通用 – Alexander
@AlexanderMomchliov:我不反对,但我的答案的主要观点是解释*为什么*发生问题。这不是一个“行为不端的编译器”,而是框架中的定义冲突。 –
为什么? 'NSColor'已经有一个['init(cgColor:)'](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSColor_Class/#//apple_ref/occ/clm/NSColor/colorWithCGColor :) – Hamish
@Hamish aw,dang ......出于某种原因,我的自动完成功能没有显示出来。 :/ –