2015-04-22 35 views
5

Chcę utworzyć klasę dla systemu Mac OS i aplikacji iOS. Niestety, nie mogę używać NSColor dla iOS ani UIColor dla Mac OS.Klasa uniwersalna dla systemu Mac OS i iOS

Właściwie mam następujący kod:

#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 
} 

czy jest jakiś lepszy sposób?

+0

Tak, przepraszam ... Po prostu nie przetestowałem kodu na iOS;) Zmieniłem mój post. – Lupurus

Odpowiedz

9

Powinieneś być w stanie wykorzystać typealias dla klasy kolorów, podobnie jak to:

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

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

Chodzi o to, aby ograniczyć kompilacji warunkowej do definicji typu dla XColor, a następnie przy użyciu tego typu alias zamiast UIColor lub NSColor, zgodnie z wymaganiami w danym systemie.