Bir kategori Hedef C'de bir protokol uygulayabilir mi?


88

NSDate'de bir kategorim var ve daha önce oluşturduğum bir protokolü uygulayabilirse uygun olur. Mümkün mü? bunun için doğru sözdizimi nedir?

Yanıtlar:


144

Evet, bu mümkün. Sözdizimi şöyledir:

@interface NSDate (CategoryName) <ProtocolName>
@end

@implementation NSDate (CategoryName)
@end

İşte Apple'ın konuyla ilgili belgeleri .

Bunu bir sınıf uzantısı kullanarak yapmak da mümkündür. Delege protokollerine özel olarak uymaktan çok hoşlanıyorum. Bunu yapmak, genel arabirimden bazı sınıfların bir temsilcisi olmanın uygulama detayını gizler ve bağımlılığı başlıktan kaldırır.


Ne yazık ki protokol bildirimini sınıf kategorisinin uygulamasına taşımanın bir yolu yok.
adib

@adib Sınıf uzantıları bunun için var.
Nikolai Ruhe

@ bikram990 Belge kullanımdan kaldırıldı ve artık eski bölümünde. Bağlantıyı güncelledim.
Nikolai Ruhe

maalesef bazı delege protokol uygulamaları için ihtiyaç duyabileceğimiz kategorilerde örnek değişkenleri
tanımlayamıyoruz

@yasirmturk Bunu objc_setAssociatedObject kullanarak yapabilirsiniz :)
animaonline
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.