Şu anda Objective-C'yi öğreniyorum ve Protokollerde isteğe bağlı yöntemlerle karşılaşıyorum. Arka planım C# ve C# Arabirimine benzer bir şey olarak bir Protokol görebiliyor.@optional protocol methodlarının gerçek dünya örnekleri
Bir C# Arabirimi bir sözleşmeyi temsil ettiğinde, bir Arayüzün reklamını yaparak, tanımlanan yöntemleri uygulayacağınızı söylüyorsunuz.
Bunun akılda tutulmasıyla, neden isteğe bağlı bir yöntem tanımlamanız gerektiğine dair kafam karışmış durumda. Bu slur veya Objective-C'yi azaltma girişimi değil, Objective-C'yi seviyorum. Dilin daha iyi anlaşılmasını sağlamak için bu isteğe bağlı yöntemlerin faydalarını anlamak istiyorum.
Eğer birisi, isteğe bağlı yöntemlerin yararlı olduğu bazı gerçek dünya senaryoları (örnek kod ile) sağlayabilirse bunu takdir ediyorum.
sanırım şimdi alıyorum düşünüyorum. Bir C# Arayüzü, bir Objective-C Protokolünün sadece bir yüzüdür. Protokolü sözleşme olarak kullanabilirsiniz, ancak bu isteğe bağlı yöntemler, bir nesnenin de yanıt vermeyi seçebileceği isteğe bağlı temsilciler listesi oluşturur. Bu gerçekten ilginç. – kim3er
+1 Temsilci işlevlerini belgelemek için bir protokol kullanmak için –
Tamamen katılıyorum @Tom. Objective-C 2.0 öncesinde, temsilci yöntemleri, tüm yöntemleri uygulamak zorunda kalmadan bir temsilci olmak isteyen sınıflardan kaçınmak için genellikle NSObject'teki bir kategoride bildirilmiştir. Protokollerde isteğe bağlı yöntemler, NSObject üzerinde tonlarca yöntemi ele geçirmeyen ve yöntem çakışmalarını önlemeye yardımcı olan çok daha temiz bir çözümdür. Yalnızca Java'nın isteğe bağlı arabirim yöntemleri varsa, MouseAdapter'den devralma gibi şeylere gerek kalmaz. Bunun gibi sınıfları kullanmak genellikle tek mirasa lanetlediğim birkaç kat ... –