Hva er AppDelegate for, og hvordan kan jeg vite når du skal bruke den?

stemmer
131

Jeg bare begynner å jobbe på iPhone apps. Hvordan vet jeg når jeg skal sette ting i AppDelegate versus en egendefinert klasse? Er det en regel eller noen form for analogi med et annet programmeringsspråk som Python eller PHP som bruker en AppDelegate lignende mønster?

Publisert på 16/03/2009 klokken 23:00
kilden bruker
På andre språk...                            


4 svar

stemmer
228

Jeg unngå normalt design tilnærming implisert av Andrew bruk av begrepet "hjertet av din søknad". Hva jeg mener med dette er at jeg tror du bør unngå klumping for mange ting i en sentral beliggenhet - god program design vanligvis innebærer å skille funksjonalitet ved "område av bekymring".

En representant gjenstand er en gjenstand som blir varslet når gjenstanden til hvilken den er forbundet når visse hendelser eller tilstander. I dette tilfelle er det Application Delegate et objekt som mottar meldinger når UIApplication gjenstanden når visse tilstander. På mange måter er det en spesialisert en-til-en Observer mønster.

Dette betyr at "område av bekymring" for AppDelegate håndterer spesielle UIApplication stater. Den viktigste av disse er:

  • applicationDidFinishLaunching: - bra for håndtering på oppstart konfigurasjon og konstruksjon
  • applicationWillTerminate: - bra for å rydde opp på slutten

Du bør unngå å sette andre funksjoner i AppDelegate siden de ikke egentlig hører hjemme der. En slik annen funksjonalitet innbefatter:

  • Document data - du bør ha et dokument leder Singleton (for flere dokumentapplikasjoner) eller et dokument enkelt (for enkelt dokumentprogrammer)
  • Knapp / bord / vis-kontrollere, se delegaten metoder eller annet vis håndtering (med unntak av konstruksjonen av det øverste bildet i applicationDidFinishLaunching :) - dette arbeidet skal være i respektive vis kontroller klasser.

Mange klump disse tingene inn i deres AppDelegate fordi de er late, eller de tror AppDelegate styrer hele programmet. Du bør unngå sentralisering i AppDelegate siden det muddies områder av interesse i programmet og ikke skalere.

Svarte 17/03/2009 kl. 07:40
kilden bruker

stemmer
23

Din søknad delegat er hjertet av søknaden din. Det er effektivt din "Program Controller".

Applikasjonsdelegate er den klasse som mottar applikasjonsnivå meldinger som bruker den applicationDidFinishLaunching meldingen som oftest brukes for å initiere dannelsen av andre synspunkter.

Selv om det ikke akkurat ligner du kan tenke på det som "main ()" rutine på Cocoa program.

Svarte 16/03/2009 kl. 23:14
kilden bruker

stemmer
1

@Shivam, takk.

Fra hva jeg forstår av appDelegate, i nærheten av hva en Applicationer i Android. Den viewDidLoad, viewDidDisappearkan sammenlignes med hva Android livssyklus. Hvert program har en livssyklus, fra lansering til avbrudd fra samtaler som kommer inn, for å varslinger dukke opp. Hvis du trenger koden for å gjøre noe spesielt når disse systemhendelsene inntreffer så må du skrive kode metodene.

I Android vi bruker onPause, onDestroy, onCreateganske tilbakeringing metoder for å håndtere slike systemhendelser.

Svarte 27/01/2017 kl. 18:01
kilden bruker

stemmer
1

Håper dette vil hjelpe litt mer ...

Programmerere nye til dette språket alltid har det samme spørsmålet - ikke programmet starte fra en hovedmetode? Ja, du har rett i dette tilfellet; IOS applikasjoner også starte fra en hoved metode.
Din viktigste klassen kaller nedenfor funksjon:

 UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 

UIApplicationMain starter Cocoa Touch kjøre loop og app infrastruktur som skaper et UIApplicationobjekt. Vår applikasjon trenger innhold slik Objective-C bruker en delegat til å håndtere dette. Det er derfor vi kaller det AppDelegate (fungere som delegat UIApplication). Vi implementerer noen av de valgfrie metoder for at representanten og den oppfører seg deretter.

Svarte 10/02/2016 kl. 10:44
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more