2011-01-02 16 views
37

C'è un modo migliore per andare su questo?porta un'app per iOS (iPhone) su mac?

L'app in questione non è troppo grande. . . gioco a giocatore singolo che ho scritto nel corso di un paio di mesi.

EDIT: Vorrei aggiungere che non ho esperienza con lo sviluppo mac. . . al di fuori di ciò che viene naturalmente con essere uno sviluppatore iOS.

MODIFICA: Classi ampiamente utilizzati nel gioco: sottoclassi di NSObject, UIView e UIViewController. Non so molto su NSView, ma sono abbastanza sicuro che tutte le cose di UIView funzioneranno in quella classe. Anche alcuni usi di UITableViewController. Ho anche Game Center, ma posso lasciare questa parte per ora. Non c'è multi-touch.

MODIFICA: la mia grafica è tutto ciò che è nei framework QuartzCore e CoreGraphics. Ho una moderata gerarchia di visualizzazione.

EDIT: Se si sta facendo un tale porto, si può anche essere interessato al tema della memory management

+1

Quali tecnologie hai usato per scrivere il gioco? Quanto sei dipendente dalle classi/oggetti UIKit sei? –

+1

Ricorda che, nonostante i trackpad, il tocco non è più il metodo di input principale. – BoltClock

risposta

25
  1. Non c'è modo semplice. È così semplice. Depressivamente, devi semplicemente diventare bravo a programmare il Mac.

  2. "Sono abbastanza sicuro che tutte le cose di UIView funzioneranno in quella classe" - sfortunatamente, no. Tutto è diverso, abbastanza da dover lavorare sodo.

Non è un concerto divertente. Assicurati davvero, davvero pensi che ne valga la pena finanziariamente.

Oltre a qualsiasi altra cosa, tenere presente che "le viste di pari livello non funzionano su OSX" se si accumulano molte viste nell'app iOS. In sostanza, dovrai passare all'utilizzo dei livelli (anziché delle semplici viste) sul Mac se ti affidi a gerarchie nidificate di viste qua e là sul telefono!

Fare clic su questo collegamento: Is there a proper way to handle overlapping NSView siblings? per i dettagli sanguinosi su quel particolare problema!

+0

Sì, a volte mi dimentico di quanto sia meraviglioso che UIKit colleghi UIViews ai CALayer per te in modo così pulito. Convertire le viste sui livelli quando le cose iniziano a rompersi su OSX non è divertente. –

+0

Che cosa sono le "viste di pari livello non funzionano sul problema di OSX?" Un po 'googling non mi ha aiutato. –

+0

OK, suppongo che intendi il problema cui si fa riferimento in [questa domanda] (http://stackoverflow.com/questions/466297/is-there-a-proper-way-to-handle-overlapping-nsview-siblings) –

4

Potresti avere un sacco di lavoro davanti a te. Mentre le classi puramente algoritmiche porteranno senza alcun cambiamento, qualsiasi cosa che tocchi UIKit dovrà probabilmente essere riscritta o fortemente adattata. Il modello di progettazione della classe UI su OSX è quello di una relazione tra le viste, in cui il codice è responsabile della gestione dei controller; mentre su iOS è una delle relazioni tra i controller della vista, in cui è implicita la gestione delle viste.

Ovviamente, come menzionato BoltClock, si ha il problema dell'interazione. Dal momento che il tocco non funziona più, probabilmente dovrai prima lavorare sul tuo modello di interazione, anche prima di iniziare il porting.

2

Esiste una libreria open source (BSD) UMEKit che può aiutare con il porting di alcune classi UI, ma potrebbe essere necessario riscrivere una buona parte dell'interfaccia utente per gestire al meglio la GUI del mouse/tastiera/multi-finestra/menu ambiente. NSObjects di base e alcuni rendering grafici Open GL e Quartz possono essere portati solo con piccoli ritocchi.

2

Come altri dicono, il porting può essere un lavoro ingrato. Le tecniche generali funzionano, però. È possibile ridisegnare l'interfaccia in Interface Builder (ove applicabile) e verificare quali sono i diversi controlli chiamati (CocoaTouch ha solo un piccolo sottoinsieme di controlli desktop tipici). L'interfaccia utente * in genere diventa NS *.La delega di Tableview è simile, quindi sarà probabilmente facile.

Devo raccomandare il libro di Aaron Hillegass come al solito. È un'ottima introduzione allo sviluppo di Mac e conoscere lo sviluppo di iOS ti dà un vantaggio.

Dato che si tratta di un gioco, è probabilmente necessario considerare come eseguire la modalità a schermo intero. Il gioco non occupa necessariamente l'intero schermo e non devi forzarlo. Ora sarà necessario un nuovo set di preferenze. C'è ovviamente del "divertimento", ora che ci sono nuovi modi per gestire l'elenco delle risoluzioni/cambiare con Snow Leopard (con i modi precedenti di dare avvertimenti sulla deprecazione).

Basta accettare che ci sarà un periodo di transizione, eventualmente, lungo fino a quando tutto "scatta" :)

Problemi correlati