Normalde Andrew'un "başvurunuzun kalbi" terimini kullanmasının ima ettiği tasarım yaklaşımından kaçınırım. Bununla kastettiğim şey, merkezi bir konuma çok fazla şey atmaktan kaçınmanız gerektiğini düşünüyorum - iyi program tasarımı normalde işlevselliği "endişe alanı" ile ayırmayı içerir.
Temsilci nesne, bağlandığı nesne belirli olaylara veya durumlara ulaştığında bildirim alan bir nesnedir. Bu durumda, Uygulama Temsilcisi, UIApplication nesnesi belirli durumlara ulaştığında bildirim alan bir nesnedir. Birçok açıdan, özel bire bir Gözlemci örüntüsüdür.
Bu, AppDelegate için "endişe konusu" özel UIA uygulama durumlarını ele aldığı anlamına gelir. Bunlardan en önemlileri:
- applicationDidFinishLaunching: - başlangıçtaki yapılandırma ve yapım işlemleri için iyi
- applicationWillTerminate: - sonunda temizlik için iyi
AppDelegate'e başka işlevler koymaktan kaçınmalısınız çünkü onlar gerçekten oraya ait değildir. Bu tür diğer işlevler şunları içerir:
- Belge verileri - bir belge yöneticisi singletonuna (birden çok belge uygulaması için) veya bir belge singletonuna (tek belge uygulamaları için) sahip olmalısınız
- Düğme / tablo / görünüm denetleyicileri, görünüm delege yöntemleri veya diğer görünüm işleme (applicationDidFinishLaunching :) üst düzey görünümünün oluşturulması hariç - bu çalışma ilgili görünüm denetleyicisi sınıflarında olmalıdır.
Birçok kişi tembel oldukları veya AppDelegate'in tüm programı kontrol ettiğini düşündükleri için bunları AppDelegate'lerine götürüyor. AppDelegate'inizde merkezileşmekten kaçınmalısınız çünkü uygulamadaki endişe verici alanları karıştırır ve ölçeklendirmez.