這讓我感到困惑......我試圖創建一個NSColor
的便利初始值設定項,它使CGColor
中的一個出現,但由於某些原因,它只是拒絕確認存在CGColor
!我已經進口Cocoa
,只是爲了理智,我還輸入了CoreGraphics
,甚至CoreGraphics.CGColor
,但仍然沒有運氣!爲什麼我的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 ......出於某種原因,我的自動完成功能沒有顯示出來。 :/ –