Objective C: Blok vs vs Seçiciler Protokolleri | Netgez.com
SORU
3 AĞUSTOS 2010, Salı


Objective C: Blok vs vs Seçiciler Protokolleri

Ben sık sık kendimi yazarken "" yeniden kullanılan projelerimi boyunca. sınıflar programı bulmak

Örneğin, bir "Kitap" olarak görmek. Adresi yoktur sanırım Bir e-posta gönderdi kim, ya da belki bir toplantı isteği eklenir kim seçmek için adres defterimi kullanmak istiyorum.

İsterdim geliştirmek bu görünüm denetleyicisi öyle olabilir, hem de e-posta denetleyicisi ve toplantılar denetleyicisi ile bir çeşit geri arama mekanizması için izin arayanı biliyor kullanıcı ya da bitmiş seçme birinden adres defteri, ya da iptal ettiler.

Bu senaryoda alabilir yaklaşımlar dört; temelde var gibi görünüyor

  • Bir "" protokol ve AddressBookController. ilgili temsilci bir özellik AddressBookDelegate oluÅŸturun Sonra iletileri protokol sonucu iletiÅŸim kurmak için tanımlı (UİActionSheetDelegate benzer) kullanın.

  • OluÅŸturmak bir "gayri resmi" "AddressBookDelegate" protokol ve ilgili temsilci özellik AddressBookController, ama bu tür temsilci özelliÄŸi olacak "id" ve check zamanı "respondsToSelector:" eÄŸer temsilci uygular yöntemleri gerektirir (gibi görünüyor en çerçevesinde bir ÅŸeyler baÅŸlamış olacak bu ÅŸekilde).

  • Bu AddressBookController bir temsilci olarak, kullanıcı bir kullanıcı seçtiÄŸinde aranacak yöntemleri belirlemek ya da isteÄŸi iptal eder İki SELs temsil eden bir ıd Pass. Faydasını görüyorum bu; sanırım bir kontrolcü HEM de e-posta gönderme VE kurma toplantıları (biliyorum bu örnekte olduÄŸu gibi kötü bir tasarım... ama bir düşünsene bir daha genel durum bu gibi görünüyor, son derece makul bir Yardımcı Sınıf) - bu durumda olabilir pass AddressBookController farklı SELs baÄŸlı ister misin ekleyerek kullanıcılar için bir e-posta veya kullanıcı ekleme için bir toplantı... büyük bir geliÅŸme içinde ıvar iÅŸaret sistemi "devlet".

  • AddressBookController iki blok; kullanıcı adres defterinden birini seçtiÄŸinde çalıştırmak için diÄŸeri ise kullanıcı isteÄŸi iptal ederse çalıştırmak için geçiÅŸ.

Bloklar benim için son derece yararlı olmuştur, ve çok daha şık, kendim kullanmak için DEĞİL zaman içinde neredeyse kafası karışık buluyorum.

Bu konu hakkında düşünceleri ile yardım edebilirim daha StackOverflow topluluk daha deneyimli üyeleri umuyorum.

CEVAP
3 AĞUSTOS 2010, Salı


'Geleneksel' bunu yapmak için bir şekilde bir protokol ile. Gayri resmi olanlar @protokolü dil eklendi, ama bu gayri resmi protokolleri, özellikle @isteğe bağlı belirtici verilen isimler en azından son bir kaç senedir benden önce ve önce kullanılmıştır. Bir 'temsilci' iki SELs geçer, bu sadece resmi bir protokol ilan daha çirkin görünüyor, ve genellikle bana pek doğru gelmiyor. gelince Bloklar çok yeni (esp. üzerinde iOS), bu işler ve süre var Henüz görmek büyük hacimli belgeleri/bloglar en iyi denenmiş ve gerçek stil, sevdim bu fikri, ve bu gibi görünüyor bir şeyler taşlarıdır iyisi: temiz yeni akış kontrol yapıları.

Temelde ne demek istediğimi her yöntemleri ve bu farklılık yaş, yok olmaktan daha iyi bir son dışında tarzı, belli ki önemli bir çok şey, ve sonuçta neden her şey bu oluşturuldu. Temel olarak, gidip yeni şey size rahat bir ya bloklar ya da bir resmi protokol ve bu karışıklık büyük olasılıkla gelecek okuma çakışan kaynakları oldukları için yazılmış farklı saatlerde, ama zaman içinde perspektif, net görmeye yerini alır Diğerleri.

[Controller askForSelection:^(id selection){
  //blah blah blah
} canceled:^{
  //blah blah blah
}];

muhtemelen bugün ivan'ın bir sürü fazladan iki yöntem, ve onlar için bir protokol (resmi ya da aksi) tanımlama veya SELs geçen ve onları saklamak daha özlü bir cehennem, vb.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ★ByScrapi★ Designs

    ★ByScrapiâ

    27 AÄžUSTOS 2013
  • jonathepianist

    jonathepiani

    31 Temmuz 2008
  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007