Sadece iPhone uygulamalarında çalışmaya başladım. AppDelegate'e özel bir sınıfa karşı ne zaman bir şeyler koymam gerektiğini nasıl bilebilirim? Bir AppDelegate benzeri desen kullanan Python veya PHP gibi başka bir programlama dili ile bir kural veya herhangi bir benzerlik var mı?AppDelegate nedir ve ne zaman kullanacağımı nasıl bilebilirim?
cevap
Normalde Andrew'un "uygulamanızın kalbi" terimini kullanmasının ima ettiği tasarım yaklaşımından kaçınıyorum. Bununla demek istediğim, merkezi bir yerde çok fazla şey toplanmasını engellemeniz gerektiğini düşünüyorum - iyi program tasarımı normalde işlevsellikten "endişe alanı" ile ayrılmasını içerir.
Delege nesnesi, bağlı olduğu nesne belirli olaylara veya durumlara ulaştığında bildirilen bir nesnedir. Bu durumda Uygulama Temsilcisi, UIApplication nesnesi belirli durumlara ulaştığında bildirim alan bir nesnedir. Bir çok açıdan, özel bir bire bir Gözlemci kalıbıdır.
Bu, AppDelegate için "endişe alanının" özel UIApplication durumlarını ele aldığı anlamına gelir. Bunların en önemlileri şunlardır:
- applicationDidFinishLaunching: - İyi
- applicationWillTerminate on-başlatma yapılandırma ve inşaat işlemek için: - sonunda temizlik için iyi
diğer işlevsellik koyarak kaçınmalıdır AppDelegate'de gerçekten ait olmadıkları için. Söz konusu diğer işlevler içerir:
- Belge veri gönderimi - (çoklu belge uygulamalar için) bir belge yöneticisi tek ya (tek belge uygulamalar için) bir belge singleton'ununu
- Düğme/tablo/görünüm denetleyicileri olmalı, görünüm temsilci yöntemleri veya diğer görünüm işleme (applicationDidFinishLaunching :) uygulamasında en üst düzey görünümün oluşturulması dışında - bu çalışma ilgili denetleyici sınıflarında olmalıdır.
Birçok kişi bu şeyleri AppDelegate'ına götürür çünkü tembeldirler veya AppDelegate'in tüm programı denetlediğini düşünürler. AppDelegate'inizde merkezileşmekten kaçınmalısınız çünkü uygulamadaki endişe alanlarını bulanıklaştıracak ve ölçeklenmeyecektir. Bu biraz daha yardımcı olacaktır
Uygulamanızın temsilcisi, uygulamanızın kalbidir. Bu etkili "Program Kontrolcünüz".
Uygulama Temsilcisi, diğer görünümlerin oluşturulmasını başlatmak için en yaygın olarak kullanılan applicationDidFinishLaunching iletisi de dahil olmak üzere uygulama düzeyinde iletiler alan sınıftır.
Tam olarak benzer olmasa da, bunu Kakao programınızın "ana()" rutinini olarak düşünebilirsiniz.
10 Size +1 veriyorum çünkü tüm UI denetleyicilerinizin AppDelegate'de olması, tüm bu özel sınıfları oluşturmaktan daha zahmetsiz. – rwols
@rwols, endişelerinizi ayırarak daha temiz kodlar için yardımcı olur ve hata ayıklama konusunda daha az güçlük çeker, bu özel sınıfı oluşturmak için zaman ayırmanız gerekir ve tüm gözlemcilerinizi tek bir dosyaya koymazsınız. – wheeliez
Umut ... Bu dilin hep aynı soruyu sahip yeni
Programcılar - Bir ana yönteminden programı başlangıcını yapar? Evet, bu durumda haklısınız; IOS uygulamaları ayrıca ana yöntemlerden başlar.
Sizin ana sınıfı aşağıdaki işlevini çağırır:
UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
UIApplicationMain bir UIApplication
nesnesi oluşturur Kakao Dokunmatik çalıştırmak döngü ve uygulama altyapısını başladı.Uygulamamızın içeriğe ihtiyacı çok objektif-c bunu işlemek için bir temsilci kullanıyor. Bu yüzden biz buna AppDelegate diyoruz (UIApplication
delege olarak hareket et). Bu delegenin bazı isteğe bağlı yöntemlerini uygularız ve buna göre davranır.
lütfen birisi bana yukarıdaki cevapta yanlış olanları anlamamı sağlayabilir –
Şaşkın görünüyor çünkü a) doğru noktalama/yazım/dilbilgisi kullanmıyorsunuz, b) konu dışı olduğu için konu dışıdır. Orijinal posteri sordu. – Kay
@Shivam, teşekkürler. Ben appDelegate
arasında anladığım
, bir Application
Android'de ne yakındır. viewDidLoad
, viewDidDisappear
, Android'in Yaşam Döngüsü ile karşılaştırılabilir. Her uygulamanın, gelen aramalardan gelen kesintilere, bildirimlerin görünmesine kadar bir yaşam döngüsü vardır. Bu olayları gerçekleştiğinde özel bir şey yapmak için kodunuza ihtiyacınız varsa, o zaman yöntemleri kod yazmanız gerekir.
Android'de, bu tür sistem olaylarını işlemek için , onDestroy
, onCreate
kinda geri çağırma yöntemlerini kullanıyoruz.
Android'in “onPause”, “onCreate” ve “onDestroy” yöntemleri, iOS View Controller'ın kullanım ömrünün “viewDidDisappear”, “viewDidLoad” yöntemlerine daha benzer. Eğer karşılaştırmanız gerekiyorsa, Android'in “Uygulama” sınıfının iOS'un “AppDelegate” e yakın olacağını söyleyebilirim. –
Teşekkürler, eğer cevabımı daha iyi yapabilirseniz lütfen yapın. Cevabımı okuduktan sonra sileceğim. – Siddharth
- 1. Son OutputDataReceived'in ne zaman geldiğini nasıl bilebilirim?
- 2. Pencerenin ne zaman oluşturulduğunu nasıl bilebilirim?
- 3. Bir URL’den indirmenin ne zaman tamamlandığını nasıl bilebilirim? Benim projede
- 4. AppDelegate
- 5. std :: decay nedir ve ne zaman kullanılmalıdır?
- 6. SPATIAL INDEX nedir ve ne zaman kullanmalıyım?
- 7. Caddr_t'nin önemi nedir ve ne zaman kullanılır?
- 8. SLEEP(), MySQL'de nasıl ve ne zaman kullanılır?
- 9. HttpPostedFile.InputStream - ve ne zaman kullanılmalıdır?
- 10. Sistem çağrıları ne zaman ve nasıl kesilir?
- 11. "Kategorize Edilmemiş" Android Bildirim Kanalı nedir ve ne zaman görünür?
- 12. Ne zaman kullanılmalı ve Aurelia'da ne zaman kullanılır?
- 13. Humble Object kalıbı nedir ve ne zaman yararlı olur?
- 14. php: // input & php: // output'un anlamı nedir ve ne zaman kullanılmalıdır?
- 15. deneyin, deneyin! & Deneyin? fark nedir ve ne zaman kullanılır?
- 16. 'GetType()' ı ne zaman 1 anlamı nedir?
- 17. Rails'de "|| =" operatörünü ne zaman kullanıyoruz? Önemi nedir?
- 18. OpenGLES 2 - glBindTexture ne zaman ve ne zaman glActiveTexture?
- 19. Ne zaman assert() kullanılmalı ve ne zaman kullanılmalı?
- 20. Gen_Fsm ne zaman kullanılır ve Gen_Server ne zaman kullanılır?
- 21. GörünümWillAppear ve ne zaman viewDidLoad içine koymak ne zaman?
- 22. Vektörler ne zaman kullanılır ve C++ dizini ne zaman kullanılır?
- 23. undef_method ne zaman kullanılır ve remove_method ne zaman kullanılır?
- 24. Eklentiler ne zaman seçilecek ve ne zaman ipucu seçileceği
- 25. Bir kullanıcı ne zaman ve ne zaman bir Facebook paylaştı
- 26. Nasıl nesnel c AppDelegate dönüşmeye?
- 27. Ne zaman kullanılmalı Runtime.maxMemory() ve totalMemory()
- 28. Bootstrap minik resim bileşenini nasıl kullanacağımı anlayamıyorum
- 29. GIDSignInDelegate, AppDelegate ve ViewController'da onaylamıyor mu?
- 30. hata "_OBJC_CLASS _ $ _ AppDelegate",: Ben,
Matt, son cümle anlam ifade etmiyor. – Abizern
Bunun için üzgünüm, Abizern. Şimdi cümleleri tamir ettim. –
+1 Bu mükemmel bir cevaptır. Alt görünümlerin, bir görünüm denetleyicisine farklı bir alt görünüme geçmesi talimatını vermek için appDelegate komutunu çağıran ve kod kokusu gibi görünen bazı örnek kodlara bakıyordum. Burnumun iyi olduğunu bilmek hala işe yarıyor. – Alan