SORU
6 Mart 2009, Cuma


Objective-C @protokolü için bir sınıf örneği dökme

Olabilir ya da tanımlanmış bir Protokole uygun olmayan bir nesne (bir UİViewController) var.

Eğer nesne Protokole uygun olup olmadığını belirlemek, güvenli bir şekilde yöntemini çağırın biliyorum:

if([self.myViewController conformsToProtocol:@protocol(MyProtocol)]) {
    [self.myViewController protocolMethod]; // <-- warning here
}

Ancak, böyle büyük mükafat bir uyarı gösterir:

warning 'UIViewController' may not respond to '-protocolMethod'

Bu uyarı önlemek için doğru yolu nedir? MyProtocol a sınıfı self.myViewController dökme gibi görünmüyorum.

CEVAP
26 Kasım 2010, Cuma


Bunu yapmak için doğru bir şekilde yapmak

if ([self.myViewController conformsToProtocol:@protocol(MyProtocol)])
{
        UIViewController <MyProtocol> *vc = (UIViewController <MyProtocol> *) self.myViewController;
        [vc protocolMethod];
}

UIViewController <MyProtocol> * tür atama için çeviren "vc bir UİViewController nesne uyan MyProtocol", oysa kullanarak id <MyProtocol> çevirir "vc bir nesnenin bilinmeyen bir sınıf uyan MyProtocol".

Bu şekilde derleyici size uygun tip kontrolü vc - derleyici sadece sana bir uyarı eğer herhangi bir yöntemi bu değil ilan ya UIViewController <MyProtocol> denir. id yalnızca nesnenin sınıf/tip dökme biliyor musun eğer bu durumlarda kullanılmalıdır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caina Mondo Zine

    Caina Mondo

    13 EKİM 2007
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • TecnoTutosPC

    TecnoTutosPC

    19 Kasım 2012