2015-12-05 7 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 खेल का मैदान 7.1.1 के साथ परीक्षण किया गया। और स्विफ्ट 2.1

+2

बहुत ही रोचक सवाल। मैंने पहले कभी उसमें भाग नहीं लिया है। – matt

उत्तर

36

यह है, क्योंकि एक बार UIImage अंदर, अवधि CIImage UIImage कीCIImageसंपत्ति के रूप में देखा जाता है, निहित self संदेश प्राप्तकर्ता के रूप में की वजह से - दूसरे शब्दों में, स्विफ्ट अपने CIImageself.CIImage में बदल जाता है और यह सब है वहां से डाउनहिल।

आपने मॉड्यूल नेमस्पेसिंग की स्विफ्ट का उपयोग के माध्यम से disambiguating द्वारा इस का समाधान कर सकते हैं:

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

संपादित स्विफ्ट 3 इस समस्या में दूर जाना होगा, क्योंकि सभी गुण छोटे अक्षरों के साथ शुरू होगा। संपत्ति का नाम ciImage रखा जाएगा, और सीआईएममेज कक्षा के साथ कोई भ्रम नहीं होगा।

+0

ग्रेट, धन्यवाद मैट। –

संबंधित मुद्दे

 संबंधित मुद्दे