Sto solo cominciando a lavorare su applicazioni per iPhone. Come faccio a sapere quando dovrei essere messa roba in AppDelegate contro una classe personalizzata? C'è una regola o qualsiasi tipo di analogia con un altro linguaggio di programmazione come Python o PHP che utilizza un AppDelegate come modello?
Qual è l'AppDelegate e come faccio a sapere quando usarlo?
fonte dall'utente resopollution
In altre lingue...
Io normalmente evitare l'approccio progettuale implicito dall'uso di Andrew del termine "cuore della vostra applicazione". Quello che voglio dire con questo è che penso che si dovrebbe evitare grumi troppe cose in una posizione centrale - buona progettazione del programma normalmente comporta la separazione funzionalità da "area di interesse".
Un oggetto delegato è un oggetto che viene notificato quando l'oggetto a cui è collegato raggiungimento di determinati eventi o stati. In questo caso, il delegato applicazione è un oggetto che riceve le notifiche quando l'oggetto raggiunge UIApplication alcuni stati. Per molti aspetti, si tratta di una specializzata pattern Observer uno-a-uno.
Ciò significa che il "area di interesse" per l'AppDelegate sta gestendo particolari stati UIApplication. Il più importante di questi sono:
- applicationDidFinishLaunching: - buona per la gestione on-startup di configurazione e di costruzione
- applicationWillTerminate: - buono per la pulizia alla fine
Si dovrebbe evitare di mettere altra funzionalità della AppDelegate dal momento che in realtà non ci appartengono. Tale altre funzionalità comprende:
- Dati del documento - si dovrebbe avere un Singleton Document Manager (per le applicazioni multiple di documenti) o di un documento di Singleton (per le applicazioni di singolo documento)
- Tasto / tabella / vista controllori, metodi delegato immagine o altra vista movimentazione (tranne per la costruzione della vista di primo livello in applicationDidFinishLaunching :) - questo lavoro dovrebbe essere in rispettive classi vista controllore.
Molte persone grumo queste cose nella loro AppDelegate perché sono pigri o pensano che l'AppDelegate controlla l'intero programma. Si dovrebbe evitare di accentramento nella vostra AppDelegate dal momento che intorbida le aree di interesse in app e non è scalabile.
Il delegato applicazione è il cuore della vostra applicazione. E 'efficace la vostra "Controller Program".
Il Delegato applicazione è la classe che riceve messaggi a livello di applicazione, tra cui il messaggio applicationDidFinishLaunching più comunemente usato per avviare la creazione di altri punti di vista.
Anche se non esattamente simile si potrebbe pensare ad esso come il "main ()" di routine del programma di cacao.
Spero che questo aiuterà un po 'di più ...
I programmatori nuovi a questo linguaggio hanno sempre la stessa domanda - non il programma parte da un metodo main? Sì, hai ragione, in questo caso; Applicazioni IOS partono anche da un metodo main.
La classe principale chiama la funzione qui sotto:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain prende il via il ciclo e applicazione eseguire le infrastrutture Cocoa Touch che crea un UIApplicationoggetto. La nostra applicazione ha bisogno di contenuti in modo Objective-C utilizza un delegato per gestire questa situazione. Ecco perché lo chiamiamo AppDelegate (agire come delegato UIApplication). Implementiamo alcuni dei metodi facoltativi di quel delegato e si comporta di conseguenza.
@Shivam, grazie.
Da quello che ho capito di appDelegate, è vicino a quello che una Applicationè in Android. Il viewDidLoad, viewDidDisappearè paragonabile a quello del ciclo di vita di Android. Ogni applicazione ha un ciclo di vita, dal lancio a interruzioni da chiamate in arrivo, per le notifiche che rivelano. Se è necessario il codice per fare qualcosa di speciale quando questi systemeventi si verificano, allora avete bisogno di scrivere codice i metodi.
In Android usiamo onPause, onDestroy, onCreatemetodi po 'di callback per gestire tali eventi di sistema.