Se stai costruendo sia per iOS che per OS X (e forse ora anche per watchOS e tvOS), stai costruendo il tuo codice almeno due volte: una volta per ogni piattaforma. Se si desidera eseguire un codice diverso su ciascuna piattaforma, si desidera un condizionale build-time, non un controllo run-time.
Swift non ha alcun preprocessore, ma ha direttive di compilazione condizionale - e per la maggior parte, assomigliano all'equivalente C.
#if os(iOS) || os(watchOS) || os(tvOS)
let color = UIColor.redColor()
#elseif os(OSX)
let color = NSColor.redColor()
#else
println("OMG, it's that mythical new Apple product!!!")
#endif
È inoltre possibile utilizzare costruire configurazioni per testare per l'architettura (x86_64
, arm
, arm64
, i386
) o -D
flag di compilazione (tra cui la bandiera DEBUG
definito dai modelli Xcode standard).
Vedi Preprocessor Directives in Utilizzando Swift con cacao e Objective-C.
(Se si vuole distinguere quale tipo di dispositivo iOS sei in in fase di esecuzione, utilizzare la classe , proprio come si farebbe da objC. E 'in genere più utile e sicuro per guardare gli attributi device che sono importanti per voi piuttosto che il nome o l'idioma di un dispositivo, ad esempio utilizzare tratti e classi di dimensioni per definire l'interfaccia utente, interrogare OpenGL per le funzionalità GPU richieste, ecc.)
Probabilmente vorrai avere due target, uno per la tua app per iOS e uno per la tua app per OS X. –
Poiché Swift non ha un preprocessore né macro, forse puoi utilizzare i controlli di runtime. –