objective-c - Objectiv-C KVO 要不要在set方法中手动实现 willchange/didChange?
漂亮男人
漂亮男人 2017-05-02 09:27:56
0
2
482

比如?

- (void)setNow:(NSDate *)aDate {
    [self willChangeValueForKey:@"now"];
    _now = aDate;
    [self didChangeValueForKey:@"now"];
}

还是直接

- (void)setNow:(NSDate *)aDate {
    
    _now = aDate;
    //自动调用 willChange didChange方法?
}

2 如果在category里用runtime增加一个属性时,如果需要使用KVO,需要手动使用这两个方法么?

-(void)setStr:(NSString *)str  
{  //这里需要手动使用 willChange didChange么?
    objc_setAssociatedObject(self, & strKey, str, OBJC_ASSOCIATION_COPY);  
}  
漂亮男人
漂亮男人

membalas semua(2)
我想大声告诉你

Jika nilai lama dan nilai baharu berbeza, anda perlu menghantar pemberitahuan manual. Objek bersekutu tidak boleh mensintesis kaedah penetap, dan kaedah penetap mesti diberikan oleh pengaturcara. Apabila kami kvo atribut ini, masa jalan mengesan bahawa kami telah melaksanakan penetap dan tidak akan mengatasi kaedah ini, jadi pemberitahuan tidak boleh dikeluarkan. Jadi pemberitahuan ini juga perlu dihantar secara manual

刘奇

Ia perlu ditulis secara manual dan tidak akan dipanggil secara automatik.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan