Objektif-c, kakao ve iPhone dev'de genel olarak yeni olduğum için, dilden ve çerçevelerden en iyi şekilde yararlanmak için güçlü bir arzum var.
Kullandığım kaynaklardan biri, Stanford'un web'de bıraktıkları CS193P sınıfı notları. Ders notlarını, ödevleri ve örnek kodu içerir ve ders Apple dev'in verdiği için kesinlikle "atın ağzından" olduğunu düşünüyorum.
Sınıf Web Sitesi:
http://www.stanford.edu/class/cs193p/cgi-bin/index.php
Ders 08 UINavigationController yığınına itilmiş birden fazla UIViewController içeren bir UINavigationController tabanlı uygulama oluşturmak için bir atama ile ilgilidir. UINavigationController böyle çalışır. Bu mantıklı. Bununla birlikte, slaytta UIViewControllers'ınız arasında iletişim kurma konusunda bazı sert uyarılar vardır.
Bu ciddi slaytlardan alıntı yapacağım:
http://cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf
Sayfa 16/51:
Verileri Paylaşmama
- Global Değişkenler veya singletonlar
- Buna uygulama temsilciniz de dahildir
- Doğrudan bağımlılıklar kodunuzu daha az yeniden kullanılabilir hale getirir
- Hata ayıklamak ve test etmek daha zor
Tamam. Ben bununla beraberim. Viewcontroller arasında iletişim kurmak için kullanılacak tüm yöntemlerinizi körü körüne atmayın ve uygulama delege yöntemlerindeki viewcontroller örneklerine başvurmayın. Adil 'nuff.
Biraz daha ileride, bize ne yapmamız gerektiğini söyleyen bu slaydı alıyoruz .
Sayfa 18/51:
Veri Akışı için En İyi Uygulamalar
- Şekil dışarı tam olarak tebliğ gerekenleri
- Görünüm denetleyiciniz için giriş parametrelerini tanımlayın
- Hiyerarşiyi yedeklemek için gevşek bağlantı kullanın
- Gözlemciler için genel bir arabirim tanımlama (temsilci seçme gibi)
Bu slaytı daha sonra, öğretim elemanının UIImagePickerController ile bir örnek kullanarak en iyi uygulamaları gösterdiği yer tutucu slayt olduğu anlaşılır. Keşke videolar mevcut olsaydı! :(
Tamam, korkarım ... objc-fu'm o kadar güçlü değil. Ayrıca yukarıdaki alıntıdaki son satırdan biraz kafam karıştı. Ben bu konuda googling adil payımı yapıyordum ve çeşitli Gözlem / Bildirim teknikleri yöntemleri hakkında konuşan iyi bir makale gibi görünen buldum:
http://cocoawithlove.com/2008/06/five-approaches-to dinleme;-observing.html
5. yöntem bile delegeleri bir yöntem olarak gösterir! Dışında .... nesneler aynı anda yalnızca bir delege ayarlayabilir. Peki, birden çok viewcontroller iletişimim olduğunda ne yapacağım?
Tamam, bu kurulan çete. Ben kolayca benim appdelegate çoklu viewcontroller örnekleri referans ile uygulama delege iletişim yöntemleri yapabilirim biliyorum ama ben bu şekilde bir şey doğru şekilde yapmak istiyorum .
Lütfen aşağıdaki soruları yanıtlayarak "doğru olanı yapmama" yardım edin:
- UINavigationController yığını üzerinde yeni bir viewcontroller itmeye çalıştığımda, kim bu push yapıyor olmalı. Kodumdaki hangi sınıf / dosya doğru yer?
- Farklı bir UIViewController içinde olduğum zaman benim UIViewControllers birinde bazı veri parçasını (bir iVar değeri) etkilemek istediğinizde, bunu yapmak için "doğru" yolu nedir?
- Bir nesnede aynı anda yalnızca bir delege ayarlayabileceğimizi söyleyin, öğretim görevlisi "Gözlemciler için genel bir arabirim tanımlayın (delegasyon gibi)" derken uygulama neye benzeyecektir . Bir sözde kod örneği, mümkünse burada çok yardımcı olacaktır.