2010-01-14 11 views
5

Come si porta un'applicazione Cocoa/Mac a Windows? Voglio dire come faresti a riguardo? Supponiamo che l'app sia stata scritta con Objective-C e Cocoa, non c'è niente di stravagante, nessun "motore" che possa essere scomposto, ecc.Come si porta un'applicazione Cocoa/Mac a Windows?

Riscrivere da zero? Non penso che ci saranno enormi sovrapposizioni tra le basi di codici Mac e Windows, giusto?

+0

Grazie per il vostro aiuto, tutti! Apprezzo le applicazioni che hanno un aspetto simile al Mac, che sembrano e si comportano come se fossero sul Mac. Quindi è nativo Cocoa. Penso che gli utenti di Windows apprezzeranno allo stesso modo un'applicazione nativa di Windows. Sembra che l'unico modo per arrivarci sia riscrivere. – Ron

risposta

2

Il problema con Objective C è il suo supporto molto scarso su qualsiasi piattaforma che non sia OS X. Puoi provare a usare lo Cocotron, ma non lo considererei ancora pronto per la produzione.

Per la portabilità, è necessaria una riscrittura. Con l'uso giudizioso di standard C o C++ per il "core" dell'applicazione, è comunque possibile implementare codice GUI specifico per piattaforma. Se non ti piace mantenere due GUI, puoi anche provare un toolkit come Qt

+0

Grazie per il tuo aiuto. – Ron

+0

link a [qt.nokia.com] (http://qt.nokia.com) cambiato in [qt.io] (http://qt.io) – armanke13

1

Sei al corrente di Cocotron? Sembra che il progetto sia andato stancato, ma comunque è un buon punto di partenza. È un progetto per portare le API del core.

Se l'applicazione non è separata in modo pulito (ad esempio: a la MVC), l'unica soluzione è una riscrittura, penso.

+0

Cocotron sembra carino ma stantio.:-( E l'app sarà pulita MVC ma ogni parte scritta in Objective-C. In si baserà su CoreData. Grazie per il tuo aiuto! – Ron

+0

Cocotron non è aggiornato. Vedi http://code.google.com/p/cocotron/updates/list – Ken

+0

Oh, buono a sapersi! – Ron

2

A seconda di quali oggetti e framework stai usando per la tua app di cacao, potresti essere in grado di farla franca usando gnustep, anche se il il risultato finale sarà probabilmente molto strano per gli utenti di Windows e l'ambiente di sviluppo potrebbe essere un po 'difficile da configurare all'inizio.

+0

Grazie per il vostro aiuto. – Ron

4

Ho dubbi su cocotron. Non è chiaro dal sito di cocotron che il cocotron è in realtà ancora pronto per la produzione. Ho il sospetto che sia possibile avviare un nuovo sviluppo di app e utilizzare costantemente cocotron per mantenere e testare le build di Windows in movimento. Ma il fatto di riadattarlo in un progetto esistente potrebbe essere un compito molto più grande. Non ci sono alternative al cocotron, a parte forse gnustep.

L'approccio pratico allo sviluppo multipiattaforma prevede lo sviluppo dei componenti non GUI della propria applicazione, una volta, in C o C++. E poi usando una libreria di interfaccia grafica multipiattaforma come QT - che è MOLTO bravo a generare e usare l'interfaccia utente nativa dove possibile o fingere dove no. Per favore, vai su qt.nokia.com e scarica l'ultima versione di QTCreator per windows e mac - Scopri come la stessa applicazione QT ha un aspetto molto convincente su entrambe le piattaforme.

Se QT non fornisce una soluzione nativa sufficiente, è necessario sviluppare la GUI due volte: una volta in Cocoa e una volta in Win32. La GUI del cacao sarebbe ovviamente in C oggettivo, la GUI Win32 in C/C++.

Il codice dell'applicazione non gui - scritto in C++ - non è in grado di chiamare Objective-C direttamente, ma non è difficile scrivere classi di shim, implementato in file .mm - fornire un'interfaccia C++ e accedere a un oggetto oggettivo o una classe.

Devi anche trovare un'alternativa a CoreData su Windows - forse sqlite? Dato che XCode ha integrato il supporto per il framework sqlite e testare più percorsi di codice è, beh, più lavoro - forse l'eliminazione di CoreData a favore di un livello comune è un approccio migliore?

Problemi correlati