Rumah > Soal Jawab > teks badan
Sebagai contoh?
- (void)setNow:(NSDate *)aDate {
[self willChangeValueForKey:@"now"];
_now = aDate;
[self didChangeValueForKey:@"now"];
}
Atau terus
- (void)setNow:(NSDate *)aDate {
_now = aDate;
//自动调用 willChange didChange方法?
}
2 Jika anda menggunakan masa jalan untuk menambah atribut dalam kategori, dan jika anda perlu menggunakan KVO, adakah anda perlu menggunakan kedua-dua kaedah ini secara manual?
-(void)setStr:(NSString *)str
{ //这里需要手动使用 willChange didChange么?
objc_setAssociatedObject(self, & strKey, str, OBJC_ASSOCIATION_COPY);
}
我想大声告诉你2017-05-02 09:29:56
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
怪我咯2017-05-02 09:29:56
Ia perlu ditulis secara manual dan tidak akan dipanggil secara automatik.