Ik ben net begonnen om te werken op de iPhone apps. Hoe weet ik wanneer ik moet zetten spullen in AppDelegate versus een aangepaste klasse? Is er een regel of een vorm van analogie met een andere programmeertaal zoals Python of PHP dat een AppDelegate gebruikt als patroon?
Wat is de AppDelegate en hoe weet ik wanneer het te gebruiken?
bron van user resopollution
In andere talen...
Ik vermijden normaliter het ontwerp aanpak gesuggereerd door het gebruik van de term "hart van uw applicatie" Andrew's. Wat ik bedoel is dat ik denk dat je moet voorkomen dat klonteren te veel dingen op een centrale locatie - goed programma-ontwerp in de regel het scheiden van functionaliteit door "punt van zorg".
Een gedelegeerde object een object dat wordt ontvangen als het object waaraan het verbonden bepaalde gebeurtenissen of toestanden bereikt. In dit geval is de applicatie Delegate een object dat berichten ontvangt wanneer het object UIApplication bepaalde toestanden bereikt. In veel opzichten is het een gespecialiseerde één-op-één Observer patroon.
Dit betekent dat de "punt van zorg" voor het AppDelegate behandelt speciale UIApplication staten. De belangrijkste hiervan zijn:
- applicationDidFinishLaunching: - goed voor de behandeling van on-startup configuratie en constructie
- applicationWillTerminate: - goed voor het opruimen aan het eind
Je moet voorkomen dat andere functionaliteit in de AppDelegate, omdat ze niet echt thuishoren. Dergelijke andere functies omvat:
- Document data - moet u een document manager singleton (voor meerdere document toepassingen) of een document singleton (voor één document toepassingen) hebben
- Button / table / view controllers, uitzicht delegeren methoden of andere opvatting hanteren (behalve voor de bouw van de top-level view in applicationDidFinishLaunching :) - dit werk zou moeten zijn in de respectievelijke view controller klassen.
Veel mensen klonteren deze dingen in hun AppDelegate omdat ze lui of ze denken dat de AppDelegate regelt het hele programma. Je moet centraliseren in uw AppDelegate te voorkomen, omdat het vertroebelt de punten van zorg in de app en niet op schaal.
Uw sollicitatie afgevaardigde is het hart van uw aanvraag. Het is effectief uw "Program Controller".
De Application Delegate is de klasse die applicatie-niveau berichten, met inbegrip van de applicationDidFinishLaunching bericht meestal gebruikt om de creatie van andere standpunten te initiëren ontvangt.
Hoewel niet precies gelijk je zou kunnen denken als de "main ()" routine van uw Cocoa programma.
Ik hoop dat dit een beetje meer te helpen ...
Programmeurs nieuw in deze taal hebben altijd dezelfde vraag - heeft het programma te starten vanuit een van de belangrijkste methode? Ja, je hebt gelijk in dit geval; IOS-apps ook starten vanuit een van de belangrijkste methode.
Je belangrijkste klasse noemt de volgende functie:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain start Cocoa Touch werking lus app infrastructuur die een creëert UIApplicationobject. Onze applicatie moet content, zodat Objective-C maakt gebruik van een afgevaardigde om dit te verwerken. Daarom noemen we het AppDelegate (fungeren als afgevaardigde van UIApplication). Wij implementeren een aantal van de mogelijke methoden van die afgevaardigde en het gedraagt zich dienovereenkomstig.
@Shivam, bedankt.
Van wat ik begrijp van appDelegate, ligt dicht bij wat een Applicationis in Android. De viewDidLoad, viewDidDisappearis vergelijkbaar met wat Android Lifecycle. Elke toepassing heeft een levenscyclus, van de lancering om onderbrekingen van oproepen in, om de meldingen komen opdagen. Als u uw code nodig om iets speciaals te doen wanneer deze systemgebeurtenissen dan optreden die u nodig hebt om code te schrijven van de methoden.
In Android gebruiken we onPause, onDestroy, onCreateeen beetje callback-methoden te hanteren een dergelijk systeem gebeurtenissen.