2015-12-05 5 views
12

このコードは関数型でない値 'CIImage?'を呼び出すことができません。

let ciImage = CIImage(image:UIImage()) 

を完全に罰金コンパイルし、私はUIImage

extension UIImage { 
    func foo() { 
     let ciImage = CIImage(image:UIImage()) // compile error 
    } 
} 

の延長にそれを移動すると、しかし私は

 
Cannot call value of non-function type 'CIImage?' 

なぜ以下のコンパイルエラーを取得しますか?


Xcode Playground 7.1.1でテスト済みです。一度UIImageの内側に、用語CIImage UIImageのCIImage財産と見られている、ためと2.1

+2

非常に興味深い質問です。私は前にそれに遭遇したことはありません。 – matt

答えて

36

スウィフトそれが原因メッセージの受信者として暗黙のselfに、だ - つまり、スウィフトはあなたのCIImageself.CIImageになり、それがすべてですそこから下り坂。あなたは、モジュールの名前空間のスウィフトの使用を通して曖昧さをなくすことで、これを解決することができ

extension UIImage { 
    func foo() { 
     let ciImage = UIKit.CIImage(image:UIImage()) 
    } 
} 

EDITスウィフト3では、すべてのプロパティは、小さな文字で開始しますので、この問題は、離れて行くでしょう。このプロパティの名前はciImageとなり、CIImageクラスと混同することはありません。

+0

素晴らしいです、ありがとうございました。 –

関連する問題