Essendo nuovo per gli sviluppatori di obiettivi-c, cacao e iPhone in generale, ho un forte desiderio di ottenere il massimo dalla lingua e dai framework.
Una delle risorse che sto usando sono le note sulla classe CS193P di Stanford che hanno lasciato sul web. Include appunti di lezione, compiti e codice di esempio, e poiché il corso è stato impartito dagli sviluppatori di Apple, lo considero sicuramente "dalla bocca del cavallo".
Sito web della classe:
http://www.stanford.edu/class/cs193p/cgi-bin/index.php
La lezione 08 è correlata a un'assegnazione per la creazione di un'app basata su UINavigationController con più UIViewController inseriti nello stack UINavigationController. Ecco come funziona UINavigationController. Questo è logico. Tuttavia, ci sono alcuni avvertimenti severi nella diapositiva sulla comunicazione tra i tuoi UIViewController.
Citerò questo serio di diapositive:
http://cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf
Pagina 16/51:
Come non condividere i dati
- Variabili globali o singoli
- Ciò include il delegato dell'applicazione
- Le dipendenze dirette rendono il codice meno riutilizzabile
- E più difficile eseguire il debug e il test
Ok. Sono giù con quello. Non lanciare alla cieca tutti i metodi che verranno utilizzati per comunicare tra il viewcontroller nel delegato dell'app e fare riferimento alle istanze del viewcontroller nei metodi delegato dell'app. Discreto.
Un po 'più avanti, abbiamo questa diapositiva che ci dice cosa dovremmo fare.
Pagina 18/51:
Best practice per il flusso di dati
- Scopri esattamente cosa deve essere comunicato
- Definire i parametri di input per il controller della vista
- Per comunicare il backup della gerarchia, utilizzare l'accoppiamento libero
- Definire un'interfaccia generica per gli osservatori (come la delega)
Questa diapositiva è quindi seguita da quella che sembra essere una diapositiva di segnaposto in cui il docente dimostra apparentemente le migliori pratiche 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 citazione sopra. Ho fatto la mia giusta dose di googling su questo e ho trovato quello che sembra essere un articolo decente che parla dei vari metodi di osservazione / tecniche di notifica:
http://cocoawithlove.com/2008/06/five-approaches-to -listening-observing.html
Il metodo n. 5 indica anche i delegati come metodo! Tranne .... gli oggetti possono impostare un solo delegato alla volta. Quindi, quando ho una comunicazione con più viewcontroller, cosa devo fare?
Ok, questa è la banda organizzata. So di poter facilmente eseguire i miei metodi di comunicazione nel delegato dell'app facendo riferimento alle istanze multiple del viewcontroller nel mio delegato dell'app, ma voglio fare questo tipo di cose nel modo giusto .
Ti prego, aiutami a "fare la cosa giusta" rispondendo alle seguenti domande:
- Quando sto provando a spingere un nuovo viewcontroller sullo stack UINavigationController, chi dovrebbe fare questo push. Quale classe / file nel mio codice è il posto giusto?
- Quando voglio influenzare alcuni dati (valore di un iVar) in uno dei miei UIViewController quando mi trovo in un UIViewController diverso , qual è il modo "giusto" per farlo?
- Supponiamo che in un oggetto sia possibile impostare un solo delegato alla volta, come sarebbe l'implementazione quando il docente dice "Definire un'interfaccia generica per gli osservatori (come la delega)" . Un esempio di pseudocodice sarebbe estremamente utile qui, se possibile.