SORU
9 NİSAN 2009, PERŞEMBE


Nasıl Objective-C temsilciler / protokoller uzatmak

Eğer AVAudioPlayer gibi bir sınıf genişletmek istiyorum, ayrıca AVAudioPlayerDelegate için başka bir yöntem eklemek için en iyi yolu nedir ?. Bunun için bir kategori yaparım, bunu uzatabilirim? Alırsan ben de eklersek o zaman ben de emin gerçek temsilci alıcı/ayarlayıcı üzerine yapmak zorunda ? Nasıl protokolü uzatmak istiyorsunuz ? Bana aşağıdaki hataları veriyor



@protocol AudioTrackDelegate : AVAudioPlayerDelegate {
    - (void)foo;
}
@end

@interface AudioTrack : AVAudioPlayer {
}
@end

CEVAP
9 NİSAN 2009, PERŞEMBE


Başka bir protokol uygulayan bir protokol oluşturmak için sözdizimi gibi

@protocol NewProtocol <OldProtocol>
- (void)foo;
@end

Eğer bir işaretçi OldProtocol yazılan NewProtocol yöntemi çağırmak istiyorsanız ya respondsToSelector arayın:

if ([object respondsToSelector:@selector(foo)])
    [(id)object foo];

Veya NSObject bir kategori olarak saplama yöntemleri tanımlayın:

@interface NSObject (NewProtocol)
- (void)foo;
@end
@implementation NSObject (NewProtocol)
- (void)foo
{
}
@end

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Engadget

    Engadget

    18 EYLÜL 2006
  • Official Clouds

    Official Clo

    1 HAZİRAN 2011
  • TechBalance

    TechBalance

    12 HAZİRAN 2011