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

  • Bart Baker

    Bart Baker

    1 Aralık 2006
  • graham025

    graham025

    25 NİSAN 2006
  • Jason Parker

    Jason Parker

    14 Aralık 2009