SORU
19 Kasım 2008, ÇARŞAMBA


Ekleme için bir NSMutableArray gözlem/kaldırma

Bir sınıfın bir özelliği (örneği var) sentezlenmiş set ile yazın NSMutableArray (@property) vardır. Eğer bu dizi kullanarak görüyorsanız:

[myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL];

Ve ekle Bu dizi: bir nesne

[myObj.theArray addObject:NSString.string];

Bir observeValueForKeyPath... bildirimdirdeğilgönderdi. Ancak, aşağıdaki uygun bildirim gönderin:

[[myObj mutableArrayValueForKey:@"theArray"] addObject:NSString.string];

Bu mutableArrayValueForKey gözlemci bildiren ilgilenir bir proxy nesnesi döndürür olmasıdır.

Ama sentezlenen set otomatik olarak böyle bir proxy nesnesi döndürmek gerekmez mi? Bu iş için doğru yolu sadece [super mutableArrayValueForKey...] çağıran özel bir erişimci yazmak ne yapmalıyım?

CEVAP
20 Kasım 2008, PERŞEMBE


Ama sentezlenen set otomatik olarak böyle bir proxy nesnesi döndürmek gerekmez mi?

Hayır.

Bu iş için doğru yolu sadece [super mutableArrayValueForKey...] çağıran özel bir erişimci yazmak ne yapmalıyım?

Hayır. array accessors uygulamak. Bu çağırdığınızda, KVO uygun bildirimleri otomatik olarak yayınlayacağız. O halde yapmanız gereken tek şey:

[myObject insertObject:newObject inTheArrayAtIndex:[myObject countOfTheArray]];

ve Doğru olanı otomatik olarak gerçekleşir.

Kolaylık sağlamak için, addTheArrayObject: bir erişimci yazabilirsiniz. Bu erişimci gerçek dizi erişenleri yukarıda açıklanan derdi:

- (void) addTheArrayObject:(NSObject *) newObject {
    [self insertObject:newObject inTheArrayAtIndex:[self countOfTheArray]];
}

(Ve dizideki nesneler için uygun sınıfı doldurabilirsiniz gerektiğini, NSObject. yerine)

O zaman, ** 16 yerine [myObject addTheArrayObject:newObject] yazın.

Ne yazık ki, add<Key>Object: ve muadili remove<Key>Object:, en son baktığımda, sadece kabul KVO için set (NSSet) özellikleri, bir dizi özellikleri, bu yüzden anlamıyorsun ücretsiz KVO bildirimleri ile onları sürece uygulamak onları üstüne set yok tanımak. Bu konuda bir hata verdim: x-radar 6407437/://sorun

a list of all the accessor selector formats blogumda var.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Engadget

    Engadget

    18 EYLÜL 2006
  • LiveForGodsKingdom

    LiveForGodsK

    6 NİSAN 2008
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011