2010-12-27 31 views
5

Geçtiğimiz günlerde MVC modelini okuyor ve iPhone geliştirmemde uygulamak istiyorum. Ancak, tam olarak nasıl uygulanacağı konusunda emin olmadığım kadar çok model varyasyonları var gibi görünüyor.Model-Görünüm Denetleyici modeli iPhone geliştirmeye nasıl uygulanır?

Topladığım kadarıyla, görünüm, gerçekleştirilen herhangi bir eylemin denetleyicisine bildirecek ve denetleyici, veri modelini (gerekirse) güncelleyecektir. Veri modeli, verilerde bir değişiklik olduğunda görünümü bilgilendirir ve görünüm, verilerin uygun şekilde görüntülenmesini günceller. Bu temel modelde, kontrolör sadece veri modeli hakkında bilgi sahibidir. Ancak, bu tasarımı iPhone uygulamamda nasıl kullanacağımı anlayamıyorum. Aşağıdaki sayfa, denetleyicinin hem veri modeli hem de görünüm hakkında bir farkındalığa sahip olduğu ve model ile görünüm arasındaki tüm iletişimin denetleyici aracılığıyla gerçekleştirildiği modelin alternatif bir versiyonunu önermektedir. Aynı zamanda modelin ve görünümün denetleyiciye erişimi olduğunu da öne sürmektedir. Veri modelinin kontrolörle bazı bildirim formları (bildirimler veya KVO) aracılığıyla etkileşimde olduğunu ve görüşün denetleyici ile eylemler üzerinden etkileşime girmesini önermek doğru olur muydu?

Bu ikinci model doğru mu?

http://www.bogotobogo.com/DesignPatterns/mvc_model_view_controller_pattern.html

Çok teşekkürler,

Danny

+1

http://stackoverflow.com/questions/3845951/discuss-on-mvc-implementation-on-iphone ait Yinelenen görünüyor – raaz

cevap

6

Ben iOS'taki MVC üzerinde çok yararlı Paul Hegartys açıklama bulundu. see his Stanford iTunes U video. MVC dakika 22.

beklendiği gibi videonun linki oraya getirmez
düzenlemek başlar. 1. Cocoa Touch, Objective-C, Tools ve MVC'ye Giriş (Eylül 21, 2010)

+0

ben bu videoyu çok yararlı buldum ve o serideki tüm videolar ... – vivianaranha

+0

okumak Gerektiği video gerçekten çok yardımcı oluyor. Onu göndermek için alkış! :) Diğer tüm posterlere de teşekkürler. Şimdi daha iyi bir anlayışa sahip olduğumu hissediyorum. – Danny

1

iOS geliştirme, MVC modeline çok fazla odaklanmıştır.

Genellikle viewControllers ve bir model ile yapılır. Görünüm, kontrolöre atanan Arayüz Oluşturucu'da oluşturulur ve model parçası başka bir yerden alınır.

Kakao-Touch için, desenin ikinci "versiyonunun", genellikle neyin devam ettiğini en iyi açıklayan model olduğunu söyleyebilirim.

MVC arkasındaki fikir modeli ve görünümü yeniden kullanılabilir, ancak denetleyici genellikle eldeki probleme takılmıştır olmasıdır. Bu, özellikle de arayüz oluşturucu kullanıyorsanız, iOS geliştirme için de geçerlidir.

görünüşüdür eylemler/temsilciler ve modeli KVO bildirimi vasıtasıyla veya yeni veri çekme kontrol birimi tarafından değişimini yayın biri yoluyla viewController kadar asılır.

Apples geliştirici portalı tarafından kullanılabilir bir miktar kod vardır ve bu kodun bazılarına bakarak başlamalısınız. Gözlerinizi ve zihninizi MVC modelini aramaya ayarladıktan sonra sürekli olarak kullandıklarını göreceksiniz, daha iyi bir soyutlama sağlamak için üstte delege deseni ile

2

MVC uzun bir süredir bu yüzden birçok varyasyon var (veya kalıba sokar).Her ne kadar kavramlar, gördüğüm çoğu MVC uygulaması için aynıdır. Apple MVC tanımlar nasıl ele alınacağını

. Cocoa Design Patterns kılavuzunda ve SDK sitesinden indirilen örnek kodda (MVCNetworking örneği) bulunabilir.

iOS ile sık sık (denetleyici ve görünümü hem birleştirilmiş rolü vardır) Modeller ve ViewControllers olacak olacak.

Ayrıca Martin Fowler yaptığı GUI Architectures bazı büyük MVC şeyler vardır. Bence

1

, ikincisi daha iyidir. Model ve görünüm tamamen ayrılmalıdır. Görünüm modelden bildirim alıyorsa, görünüm modelin tasarımında'a bağlı olacaktır. Denetleyiciyi buraya yerleştirerek, sıkıca bağlı dairesel bağımlılık yaratıldı. Son olarak, her parça bağımsız olarak geliştirilemez, böl ve ele geçirme stratejisinin kullanılması imkansızdır. mümkün olduğunca pasif ve bağımsız

  • Yap görünümü ve modeli: Genel durumlar için

    Benim tavsiye. Majör mutasyon sadece harici manipülasyon ile yapılmalıdır. Aktif olarak değiştirilmemelidir.

  • Yap kontrolörü aktif onları ve diğer denetleyicilerin hem kontrol eder.

IOS olarak, UIView tamamen pasif bir görünüşüdür. Çoğu durumda, tüm majör mutasyonlar daima UViewController tarafından dışarıdan yapılır. Ve model kısmı istediğiniz gibi tamamen uygulanmalıdır. Bazı büyük özellikli UIView, MVC desenler kullanılır bir alt ölçek olarak

(o kadar küçük olursa Yoksa Ancak, bunu önermiyoruz, denetleyici içine modellerini entegre edebilirsiniz). Fraktal!

İlgili konular