Dovrai ricodificare l'interfaccia utente indipendentemente da cosa. L'interfaccia utente di OS X è abbastanza diversa dall'interfaccia utente di iOS per significare che qualsiasi tentativo minore di trasferire l'interfaccia utente diretta (come quella menzionata da Chiron) porterà a un compromesso non perfetto.
Ad esempio:
- Gli utenti di OS X si aspettano che ci sia un insieme di menu sulla barra dei menu attraverso il quale è possibile accedere alla maggior parte delle funzionalità. Non esiste un equivalente diretto su iOS.
- Gli utenti di OS X si aspettano finestre ridimensionabili.
- Gli utenti di OS X si aspettano di poter aprire più finestre di documenti (se la tua app è un'applicazione basata su documenti).
- Molti controlli di stile iOS semplicemente non funzionano bene se il tuo dispositivo di input è un mouse.
- Alcuni dei controlli di stile di OS X hanno funzionalità più avanzate e sono anche più facili da usare per il programmatore rispetto ai loro "equivalenti" iOS (confronta NSTableView con UITableView).
Quindi, dato che è necessario riprogettare l'interfaccia utente, è necessario separare il più possibile le funzionalità dall'interfaccia utente. Ciò è in qualche modo incoraggiato in MVC comunque. Tuttavia, un modo per far rispettare questo è fisicamente separare il modello (la parte M) compilandolo come libreria statica su iOS e un framework su Mac OS X. Progettazione accurata dei controller (la parte C) utilizzando forse protocolli o delegati potrebbe permetterti di riutilizzare anche un po 'di codice.
Ad ogni modo, l'unica cosa che non dovresti mai fare (questo vale per qualsiasi app su qualsiasi piattaforma) compromette l'interfaccia utente nel nome della portabilità.