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

  • kylelandry

    kylelandry

    9 AĞUSTOS 2007
  • Slave Boy Films - Fandom from a Galaxy Far Far Away

    Slave Boy Fi

    12 HAZİRAN 2009
  • TheForgottenGamer1

    TheForgotten

    28 AĞUSTOS 2009