2013-09-02 13 views
16

Ho sviluppato solo per iOS da alcuni anni e ritengo di essere abbastanza competente con iOS e Objective C. Vorrei espandere ulteriormente le mie competenze e passare al regno di applicazioni desktop per OS X.Sviluppo per OS X proveniente dallo sfondo iOS

Considerando i paradigmi estremamente diversi per entrambe le piattaforme relative a controller di visualizzazione e controller di finestre (solo per citarne alcuni), sto cercando di trovare un punto di partenza decente per bagnarmi i piedi come la mia conoscenza di l'SDK iOS sta causando confusione durante la lettura attraverso la documentazione di OS X.

Per me, le principali classi per iOS sarebbero UIViewController (ed è varianti, UINavigationController e UISplitViewController) e UIView. Affrontare questi aspetti rende più facile comprendere le sottoclassi (come UIButton, UITextField) e allo stesso tempo ottenere qualcosa sullo schermo per fornire risultati visibili.

Attualmente, è a mia conoscenza che NSViewController non è necessariamente la stessa controparte di UIViewController. Inoltre, considerando che le applicazioni OS X possono avere più finestre, UIWindowController è completamente estraneo a me e non capisco come questo si possa trovare nella gerarchia di un'applicazione.

Qualche veterano di OS X esperto sarebbe stato così gentile da suggerire quali classi sarebbero state il punto di partenza più utile per me da leggere e giocare? Che cosa sarebbe utile per me, a questo punto è quello di trovare quale area del SDK dovrei concentrarmi i miei sforzi su di discernere pienamente le differenze tra iOS e OS X.

Edit:

io non sono chiedendo una lista di tutorial. Preferirei molto che qualcuno spiegasse la differenza tra i paradigmi per una gerarchia di controller con più viste (iOS) ad una singola finestra di OS X e/o raccomandassi quali classi sarebbero meglio studiate come punto di partenza per ottenere qualcosa sullo schermo come NSWindow e NSWindowController.

+0

Penso che questo sia una domanda interessante e vorrei avere una buona risposta da solo ma penso anche che sia abbastanza ampia (quindi difficile dare una risposta definitiva) e le domande che richiedono tutorial o altre risorse di questo tipo sono solitamente considerate "off-topic" (mi spiace) –

+0

My la domanda non richiede tutorial. È abbastanza facile cercare su Google cose del genere. Idealmente, una spinta nella giusta direzione per discernere le differenze tra le controparti iOS e OS X come 'NSViewController' e' UIViewController' sarebbe più utile, proprio come la risposta di @ JustSid. – CaptainRedmuff

risposta

9

OS X è piuttosto simile a iOS nel rispetto che segue anche il concetto MVC. Tuttavia, l'intera esperienza utente è diversa a causa del fatto che OS X di solito funziona con uno schermo più grande e usa il mouse e la tastiera per l'input, quindi una mappatura 1: 1 tra diciamo NSViewController e UIViewController non è possibile. Normalmente, hai un controller per finestre che si comporta come ti aspetteresti dal controller di visualizzazione su iOS. Tuttavia, invece di passare tra i controller di visualizzazione, utilizzando ad es. a UINavigationController, si presenta una seconda finestra come un foglio modale, o semplicemente si apre come pannello o simile.

Basta guardare la tua applicazione Mac media, molte cose che in iOS richiedono più controller di visualizzazione e transizioni tra di loro, funzionano con una sola finestra che contiene tutto. I controller di vista sotto OS X sono molto meno utili rispetto a iOS, tuttavia, funzionano perfettamente per mantenere divise logiche diverse in più classi o quando si desidera visualizzare contenuti diversi all'interno di una finestra e cambiarli (si pensi a Xcode, a sinistra e il pannello di destra sono sempre gli stessi, ma il contenuto nel mezzo, l'editor di testo, l'editor di destinazione, ecc. cambia, sarebbe un posto dove usare più controller di visualizzazione).

Il mio consiglio è di non provare a utilizzare iOS per un'applicazione Mac. Sebbene sia possibile mantenere la logica sottostante allo stesso modo, la presentazione della propria applicazione dovrebbe essere fondamentalmente diversa a causa del fatto che l'intera esperienza utente su OS X è molto diversa.Se non sei sicuro su come lavorare con cose come NSWindowController, NSDocument, e la maggior parte dei casi, la documentazione e il codice di esempio forniti da Apple è abbastanza buona (anche se alcuni esempi sono più vecchi)

+0

Grazie per la risposta. Non tenterei di iOS-ify un'applicazione. Mi sembra solo che un'applicazione iOS sia interamente composta da 'UIViewController' mentre questo non è un requisito per le app OS X. In base alla tua risposta, forse "NSWindow' e" NSWindowController "sarebbero le parti più importanti da capire per me. – CaptainRedmuff

+1

@CaptainRedmuff Sì, 'NSWindowController' è un po 'come la controparte di' UIViewController'. Come hai detto tu, sotto iOS, un'app di solito è contenuta all'interno dei controller di visualizzazione, mentre per OS X è uno o più controller di finestre. – JustSid