Jaký je AppDelegate a jak mám vědět, kdy ji použít?

hlasů
123

Jen jsem začal pracovat na iPhone aplikací. Jak to mám vědět, když jsem třeba dávat věci do AppDelegate versus vlastní třídy? Existuje pravidlo nebo jakýkoliv typ analogie s jiným programovacím jazykem, jako je Python nebo PHP, který používá AppDelegate jako vzor?

Položena 17/03/2009 v 00:00
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
220

I za normálních okolností vyhnout přístup designu implikované Ondřeje použití výrazu „srdce vaší žádosti“. Co tím chci říct je to, že myslím, že byste se měli vyvarovat dávání příliš mnoho věcí v centrální poloze - dobrý program konstrukce obvykle zahrnuje oddělování funkčnost „oblast zájmu“.

Objekt Delegát je objekt, který dostane oznámení, když je objekt, ke kterému je připojen dosáhne určité události či stavy. V tomto případě aplikace delegáta je objekt, který přijímá oznámení, když je objekt UIApplication dosáhne určité stavy. V mnoha ohledech je to specializovaný one-to-one Observer.

To znamená, že „oblast zájmu“ pro AppDelegate je manipulace se zvláštními UIApplication stavy. Nejdůležitější z nich jsou:

  • applicationDidFinishLaunching: - dobré pro manipulaci na startu konfiguraci a stavebnictví
  • applicationWillTerminate: - dobrá pro vyčištění na konci

Měli byste se vyhnout uvedení další funkce v AppDelegate protože nejsou ve skutečnosti tam nepatří. Takové další funkce zahrnují:

  • Data dokumentu - byste měli mít správce dokumentů Singleton (pro více aplikací dokument) nebo singleton dokumentu (samostatnými aplikacemi dokumentů)
  • Tlačítko / tabulka / řadiče, Výhled delegát metody nebo s nimi zacházeno jinak view (s výjimkou pro výstavbu pohledu nejvyšší úrovně v applicationDidFinishLaunching :) - tato práce by měla být v příslušných třídách pohledu regulátoru.

Mnoho lidí paušální tyto věci do svých AppDelegate proto, že jsou líní, nebo si myslí, že AppDelegate řídí celý program. Měli byste se vyhnout centralizace v AppDelegate protože rozmělňovat oblasti zájmu v aplikaci a není měřítko.

Odpovězeno 17/03/2009 v 08:40
zdroj uživatelem

hlasů
22

Vaše žádost delegáta je srdcem vaší žádosti. Je to skutečně váš „Controller Program“.

Aplikace delegáta je třída, která přijímá zprávy na aplikační úrovni, včetně applicationDidFinishLaunching zprávy nejčastěji používaných k iniciaci vytváření jiných pohledech.

I když ne tak docela podobný byste mohli myslet na to, jak „main ()“ rutiny svého Cocoa programu.

Odpovězeno 17/03/2009 v 00:14
zdroj uživatelem

hlasů
1

Doufám, že to pomůže trochu víc ...

Programátoři na tento nový jazyk vždy stejnou otázku - má program spustit z hlavní metody? Ano, máte pravdu, v tomto případě; IOS také spustit z hlavní metody.
Váš hlavní třída volá následující funkce:

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

UIApplicationMain začíná run smyčky a aplikace infrastruktury kakaa dotykové který vytvoří UIApplicationobjekt. Naše aplikace potřebuje obsah tak, Objective-C používá delegáta zvládnout. To je důvod, proč říkáme, že AppDelegate (působí jako delegát UIApplication). Realizujeme některých volitelných způsobů tohoto delegáta a podle toho se chová.

Odpovězeno 10/02/2016 v 10:44
zdroj uživatelem

hlasů
-1

@Shivam, díky.

Z toho, co vím o appDelegate, se blíží, co je Applicationv Android. viewDidLoad, viewDidDisappearJe srovnatelný s jakou Android životního cyklu. Každá aplikace má životní cyklus, od uvedení na přerušení od výzev přicházejících k oznámení objevovat. Pokud potřebujete kód udělat něco speciálního, kdy tyto systemudálosti nastanou, pak je třeba psát kód metody.

V Android užíváme onPause, onDestroy, onCreatetrochu zpětného volání metody pro nakládání s těmito systémových událostí.

Odpovězeno 27/01/2017 v 18:01
zdroj uživatelem

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