SORU
13 HAZİRAN 2009, CUMARTESİ


Java arabirimleri arasındaki farklar ve Objective-C protokolleri?

Java biliyorum, Ve şimdi tam olarak Java arabirimleri arasındaki farklar ve Objective-C protokolleri nelerdir öğrenme Objective-C mıyım?

CEVAP
13 HAZİRAN 2009, CUMARTESİ


Öncelikle, biraz Java yaratıcılarından biri ** 7,. Sonraki, Vikipedi orta derecede yararlı olmuştur section on Objective-C protocols. Özellikle Objective-C hem de destekleyen anlamakresmi protokolleraçıkça @protocol anahtar kelime ile, bir Java arayüzü eşdeğer bildirilir)kayıt dışı protokolleri(sadece yansıma yoluyla tespit edilebilir bir veya daha fazla yöntem bir sınıf tarafından uygulanan,).

Eğer resmi bir protokol kabul (Objective-C için terminoloji "bir arabirim uygulamak") derleyici Java beklediğiniz gibi uygulanmayan yöntemler için uyarılar yayar.Java (. aksine ^strong>skaffmanbahsedilen), Nesnel-C yöntemleri resmi bir Sözleşmede yer alan sınıf uygulayan bir söylendiği için "uygun olursa arayüzü açıkça kabul değilse bile" bu Protokol,.Bu kodu (-conformsToProtocol:) protokol uygunluk test edebilirsiniz:

if ([myObject conformsToProtocol:@protocol(MyProtocol)]) {
    ...
}

NOT: Apple documentation devletler:

"Bu yöntem, yukarıda gösterildiği gibi, sadece uyumluluk başlık dosyaları içinde resmi bildirimlerin temelinde belirler. Yöntemleri protokolü ilan aslında uygulanan programcı sorumluluğu var olup olmadığını görmek için kontrol etmez."

Objective-C 2.0 (OS X "Leopar" ve iOS), resmi protokoller şimdi tanımlayabilirsiniz . 10.5 olarak ^strong>isteğe bağlı yöntemlerve bir sınıf bir Protokole uygun olarak gerekli tüm yöntemleri uygular sürece. @required (varsayılan) ve @optional anahtar kelime yöntem olup olmadığını takip tanımlamalar geçiş yapmak için kullanabilirsinizgerekiryaolabilirProtokole uygun olarak uygulanması. (Bkz: Elma bölümü Objective-C 2.0 Programming Language ** 12) anlatılır rehberi

İsteğe bağlı protokolü yöntemleri geliştiriciler için çok fazla bir esneklik, özellikle uygulamak için açındelegelervedinleyiciler. Yerine uzanan bir şey gibi MouseInputAdapter (hangi olabilir sinir bozucu beri Java da tek miras) ya da uygulama çok anlamsız, boş yöntemler, kabul etmesi halinde protokol ve uygulamak sadece isteğe bağlı yöntemleri önem veriyorsunuz. Bu model ile, arayanın yöntemi çağırmadan önce uygulanan (-respondsToSelector) gibi olup olmadığını denetler:

if ([myObject respondsToSelector:@selector(fillArray:withObject:)]) {
    [myObject fillArray:anArray withObject:foo];
    ...
}

Eğer yansıma yükü bir sorun olursa, her zaman 15 ** ama dürtüleri erken optimize kurtulamazsın. :-)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Derek Banas

    Derek Banas

    12 AĞUSTOS 2008
  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • Madeon

    Madeon

    31 Ocak 2010