Essendo nuovo per ogg-c, cacao e iPhone dev in generale, ho un forte desiderio di ottenere il massimo dal linguaggio e dalle strutture.Qual è il modo migliore per comunicare tra i controller di visualizzazione?
Una delle risorse che sto utilizzando sono le note di classe CS193P di Stanford che hanno lasciato sul web. Include note di lezione, compiti e codice di esempio, e poiché il corso è stato dato da Apple Dev's, lo considero sicuramente "dalla bocca del cavallo".
Classe Sito web:
http://www.stanford.edu/class/cs193p/cgi-bin/index.php
Lecture 08 è legato a un incarico di costruire un'applicazione basata UINavigationController che dispone di più UIViewControllers inseriti nello stack UINavigationController. È così che funziona UINavigationController. È logico. Tuttavia, ci sono alcuni avvisi severi nella diapositiva sulla comunicazione tra i tuoi UIViewControllers.
ho intenzione di citare questo grave di diapositive:
http://cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf
Pagina 16/51:
Come non condividere i dati
- variabili globali o singoletti
- Questo include il applicazione delegato
- dipendenze dirette rendere il codice meno riutilizzabili
- e più difficili da eseguire il debug & prova
Ok. Sono giù con quello. Non gettare alla cieca tutti i metodi che verranno utilizzati per comunicare tra il viewcontroller nel delegato dell'app e fare riferimento alle istanze di viewcontroller nei metodi di delega dell'app. Fair 'nuff.
Un po 'più avanti, otteniamo questa diapositiva dicendoci cosa dobbiamo fare do.
Pagina 18/51:
Best Practices per il flusso di dati
- Capire esattamente ciò che deve essere comunicato
- Definire parametri di ingresso per il controller della vista
- Per la comunicazione di backup della gerarchia, utilizzare cou loose pling
- definire un'interfaccia generica per gli osservatori (come delegazione)
Questa diapositiva è poi seguito da quello che sembra essere una diapositiva segnaposto in cui il docente poi a quanto pare dimostra il migliore pratica usando un esempio con UIImagePickerController. Vorrei che i video fossero disponibili! :(
Ok, quindi ... temo che il mio objc-fu non sia così forte, sono anche un po 'confuso dall'ultima riga della frase precedente. googling su questo e ho trovato quello che sembra essere un articolo decente parlando dei vari metodi di osservazione tecniche/notifica:!
http://cocoawithlove.com/2008/06/five-approaches-to-listening-observing.html
metodo # 5 indica anche i delegati come metodo Tranne .... oggetti possono impostare solo un delegato alla volta Quindi, quando ho più comunicazioni con il viewcontroller, cosa devo fare?
Ok, questa è la gang di installazione, so che posso facilmente eseguire i miei metodi di comunicazione. n l'app delegata per riferimento è le istanze multiple di viewcontroller nel mio appdelegate ma voglio fare questo genere di cose nel modo a destra in questo modo .
Please help me "fare la cosa giusta", rispondendo alle seguenti domande:
- Quando sto cercando di spingere un nuovo viewcontroller sullo stack UINavigationController, che dovrebbe fare questa spinta. Quale classe/file nel mio codice è la posizione corretta?
- Quando voglio modificare alcuni dati (valore di un iVar) in uno dei miei UIViewControllers quando sono in un diverso UIViewController, qual è il modo "giusto" per farlo?
- Diamo che possiamo avere un solo set delegato alla volta in un oggetto, come sarebbe l'implementazione quando il docente dice "Definire un'interfaccia generica per gli osservatori (come la delega)". Un esempio di pseudocodice sarebbe terribilmente utile qui, se possibile.
Alcune di queste sono trattate in questo articolo da Apple - http://developer.apple.com/library/ios/# featuredarticles/ViewControllerPGforiPhoneOS/ManagingDataFlowBetweenViewControllers/ManagingDataFlowBetweenViewControllers.html –
Solo una breve osservazione: i video per la classe Stanford CS193P sono ora disponibili tramite iTunes U. L'ultimo (2012-13) può essere visto su https://itunes.apple.com/us/course/coding-together-developing/id593208016 e mi aspetto che i video e le diapositive future saranno annunciati all'indirizzo http://cs193p.stanford.edu –