Mi a AppDelegate és hogyan tudom, hogy mikor kell használni?

szavazat
123

Én csak most kezdenek dolgozni iPhone apps. Honnan tudom, hogy mikor kell üzembe dolgokat AppDelegate versus egyéni osztály? Van egy szabályt, vagy bármilyen analóg más programozási nyelv, mint a Python vagy PHP, hogy használ egy AppDelegate, mint a minta?

A kérdést 17/03/2009 00:00
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
220

Én általában kerülni a tervezési megközelítés sugallta András kifejezés használata „szíve az alkalmazás”. Mit értek ez, hogy azt hiszem, meg kell kerülni egy kalap alá túl sok mindent egy központi helyen - jó program tervezése általában magában elválasztó funkcionalitás „aggodalomra ad okot”.

A képviselő objektum olyan objektum, amely kap értesítést, amikor az objektumot, amelyhez csatlakozik elérnek egy bizonyos események vagy állapotok. Ebben az esetben a bejelentés kiküldött egy olyan objektum, amely bejelentést kap, amikor a UIApplication tárgy eléri bizonyos államokban. Sok tekintetben ez egy speciális egy-egy Observer minta.

Ez azt jelenti, hogy a „aggodalomra ad okot” a AppDelegate kezelő speciális UIApplication államokban. A legfontosabb ezek közül:

  • applicationDidFinishLaunching: - jó a kezelési on-indító konfigurációs és építési
  • applicationWillTerminate: - jó megtisztítására végén

Meg ne vonjon egyéb funkciós AppDelegate, mivel nem igazán tartoznak oda. Az ilyen egyéb funkciók között:

  • A dokumentum adatok - ha kell egy dokumentumkezelő Singleton (több dokumentum alkalmazások), vagy egy dokumentum egyke (egy dokumentum alkalmazások)
  • Gomb / tábla / nézet vezérlők, nézet küldötte módszerek vagy más nézetek kezelése (kivéve az építőiparban a felső szintű nézetet applicationDidFinishLaunching :) - ezt a munkát kell lenniük a megfelelő nézetvezérlőben osztályok.

Sokan egy kalap alá ezeket a dolgokat a saját AppDelegate mert lusta, vagy azt hiszik, a AppDelegate irányítja az egész programot. Meg kell kerülni a központosító AppDelegate hiszen muddies vonatkozó területek az app, és nem méretarányos.

Válaszolt 17/03/2009 08:40
a forrás felhasználó

szavazat
22

Az alkalmazás megbízottja a szíve az alkalmazás. Ez hatékonyan a „Program Controller”.

Az alkalmazás küldötte az osztály, amely befogadja alkalmazás szintű üzenetek, beleértve az üzenet applicationDidFinishLaunching leggyakrabban használt a létrehozására más nézetek.

Bár nem pontosan azonos lehetett gondolni, mint a „main ()” rutin a Cocoa programban.

Válaszolt 17/03/2009 00:14
a forrás felhasználó

szavazat
1

Remélem, ez segít egy kicsit ...

A programozók új ez a nyelv mindig ugyanazt a kérdést - nem a program indul a fő módszer? Igen, igazad van ebben az esetben; IOS alkalmazások is indul a fő módszer.
A fő osztály felhívja a lenti funkció:

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

UIApplicationMain indul a Cocoa Touch fut hurok és alkalmazás infrastruktúra, amely létrehoz egy UIApplicationobjektumot. A kérelmet szüksége tartalmat, Objective-C használ küldöttként kezelni. Ezért hívjuk AppDelegate (hatnak küldötte UIApplication). Mi végre néhány választható módszerek, amelyek résztvevői és ennek megfelelően viselkedik.

Válaszolt 10/02/2016 10:44
a forrás felhasználó

szavazat
-1

@Shivam köszönhetően.

Abból, amit értem az appDelegate, közel van, mi az Applicationaz Android. Az viewDidLoad, viewDidDisappearhasonló ahhoz, amit az Android életciklusa. Minden alkalmazás van egy életciklusa, kezdeményezi a megszakítások származó érkező hívások az értesítések felbukkan. Ha szüksége van a kódot, hogy nem valami különleges, amikor ezek systemesemények történnek, akkor meg kell írni a kódot a módszereket.

Az Android használjuk onPause, onDestroy, onCreatekicsit visszahívási eljárások kezelni az ilyen rendszer eseményeket.

Válaszolt 27/01/2017 18:01
a forrás felhasználó

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