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

  • ★TheCrono Official Channel★

    ★TheCrono

    3 Mayıs 2014
  • CodingMadeEasy

    CodingMadeEa

    25 EYLÜL 2010
  • FattySpins's channel

    FattySpins's

    17 Mayıs 2009