Jaki jest AppDelegate i jak mam wiedzieć, kiedy należy go używać?

głosy
123

Jestem po prostu zaczynają działać na iPhone apps. Skąd mam wiedzieć, kiedy należy oddanie rzeczy w AppDelegate kontra niestandardowej klasy? Czy istnieje przepis lub dowolnego rodzaju analogii z innym języku programowania jak Python lub PHP, który wykorzystuje AppDelegate jak wzór?

Utwórz 17/03/2009 o 00:00
źródło użytkownik
W innych językach...                            


4 odpowiedzi

głosy
220

Zwykle uniknąć podejście do projektowania w sposób dorozumiany przez Andrzeja stosowania terminu „sercu aplikacji”. Co mam na myśli to, że myślę, że należy unikać lumping zbyt wiele rzeczy w centralnej lokalizacji - dobry projekt Program obejmuje zazwyczaj rozdzielenie funkcjonalności przez „obszar zainteresowania”.

Obiekt delegat jest obiektem, który zostaje powiadomiony, gdy obiekt, do którego jest podłączony osiąga pewne zdarzenia lub stany. W tym przypadku wniosek Delegata jest obiektem, który otrzymuje informację, gdy obiekt UIApplication osiąga pewne stany. Pod wieloma względami jest to wyspecjalizowany jeden-do-jednego wzorca Obserwator.

Oznacza to, że „strefa niebezpieczna” dla AppDelegate operująca specjalne stany UIApplication. Najważniejsze z nich to:

  • applicationDidFinishLaunching: - dobry do manipulacji na budowie i konfiguracji startowej
  • applicationWillTerminate: - dobry do czyszczenia na koniec

Należy unikać umieszczania innych funkcji w AppDelegate ponieważ nie naprawdę nie należą. Taka inna funkcjonalność obejmuje:

  • Dane dokumentu - trzeba mieć singleton Document Manager (dla wielu aplikacji dokumentu) lub pojedyncza dokumentów (do zastosowań pojedynczego dokumentu)
  • Przycisk / tabela / widoku kontrolerów, widok metody przekazać lub innym zabiegom widok (z wyjątkiem budowy widzenia najwyższego poziomu w applicationDidFinishLaunching :) - praca ta powinna być w odpowiednich klasach widok kontrolera.

Wiele osób guzek te rzeczy do ich AppDelegate ponieważ są leniwi, albo uważają, że AppDelegate kontroluje cały program. Należy unikać centrowanie w AppDelegate ponieważ muddies obszary troski w aplikacji, a nie w skali.

Odpowiedział 17/03/2009 o 08:40
źródło użytkownik

głosy
22

Twój delegat aplikacja jest sercem aplikacji. To skutecznie swoją „Controller Program”.

Aplikacja Delegat jest klasa, która odbiera komunikaty na poziomie aplikacji, w tym wiadomości applicationDidFinishLaunching najczęściej używane do inicjowania tworzenia innych widoków.

Chociaż nie jest dokładnie podobna można myśleć o nim jako o „main ()” rutyny programie kakao.

Odpowiedział 17/03/2009 o 00:14
źródło użytkownik

głosy
1

Nadzieję, że to pomoże trochę więcej ...

Programiści nowy w tym języku zawsze mają to samo pytanie - czy program rozpocznie się od głównej metody? Tak, masz rację w tej sprawie; IOS również zacząć od głównej metody.
Twoim głównym klasy wywołuje funkcję poniżej:

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

UIApplicationMain rozpoczyna się pętla i uruchomić aplikację infrastruktury Cocoa Touch, która tworzy UIApplicationobiekt. Nasza aplikacja potrzebuje zawartość tak objective-c wykorzystuje delegata z tym poradzić. Dlatego nazywamy go AppDelegate (akt jako delegat UIApplication). Realizujemy kilka opcjonalnych metod tego delegata i zachowuje się odpowiednio.

Odpowiedział 10/02/2016 o 10:44
źródło użytkownik

głosy
-1

@Shivam, dzięki.

Z tego co rozumiem, z appDelegate, blisko co za Applicationto w Androidzie. viewDidLoad, viewDidDisappearJest porównywalny do tego, co Lifecycle Android. Każda aplikacja ma cykl życia, od rozpoczęcia do przerw z połączeń w najbliższych, do powiadomień wyświetlane. Jeśli potrzebujesz kodu zrobić coś specjalnego, gdy te systemzdarzenia to trzeba napisać kod metody.

W Androidzie używamy onPause, onDestroy, onCreatemetody trochę wywołania zwrotnego do obsługi takich zdarzeń systemowych.

Odpowiedział 27/01/2017 o 18:01
źródło użytkownik

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