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

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • Joshua Kywn

    Joshua Kywn

    17 Mayıs 2010
  • Phlearn Photoshop and Photography Tutorials

    Phlearn Phot

    11 EKİM 2011