2015-04-22 7 views
5

के लिए यूनिवर्सल क्लास मैक ओएस- और आईओएस-ऐप के लिए एक क्लास बनाना चाहता हूं। दुर्भाग्यवश, मैं आईओएस के लिए एनएससीओलर और मैक ओएस के लिए यूआईसीओलर का उपयोग नहीं कर सकता।मैक ओएस और आईओएस

#if os(iOS) 
    func myFunc(color: UIColor?) { 
     self.myFuncX(color) 
    } 
#elseif os(OSX) 
    func myFunc(color: NSColor?) { 
     self.myFuncX(color) 
    } 
#endif 

private func myFuncX(color: AnyObject?) { 
    #if os(iOS) 
     myColor = color as! UIColor 
    #elseif os(OSX) 
     myColor = color as! NSColor 
    #endif 
} 

कोई बेहतर तरीका है:

असल में मैं निम्नलिखित कोड है

?

+0

हां, क्षमा करें ... मैंने अभी आईओएस पर कोड का परीक्षण नहीं किया है;) मैंने अपनी पोस्ट संपादित की। – Lupurus

उत्तर

9

आप रंग वर्ग के लिए typealias उपयोग करने के लिए, इस तरह सक्षम होना चाहिए:

#if os(iOS) 
    typealias XColor = UIColor 
#elseif os(OSX) 
    typealias XColor = NSColor 
#endif 

func myFunc(color: XColor?) { 
    self.myFuncX(color) 
} 

विचार UIColor के स्थान पर XColor के लिए एक प्रकार परिभाषा करने के लिए सशर्त संकलन की सीमा है, और उसके बाद उस प्रकार अन्य नाम का उपयोग करने के लिए है या NSColor, जैसा कि विशेष प्रणाली पर आवश्यक है।