为啥有些方法需要在m文件里实现和有些需要实例对象来调用?
来源:8-4 手动调用KVO
慕设计0203943
2019-05-18
比如:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
-(void)didChangeValueForKey:
这俩方法。
写回答
2回答
-
没有太明白您的意思,尝试作答下:
person的观察对象(observer)是其自身,当系统监听到对象属性值的变化之后会调用observeValueForKeyPath ofObject context函数。需要自己在observer里实现它。当然observer也可以设置成其它对象。
你可以看看系统提供的@interface NSObject(NSKeyValueObserverNotification)API说明,我觉得监听实例的属性,实例对象来调用也很nice。其实你也可以试试用类对象来调用,与其对应的是类属性,我记得类属性在课程里有说明,注意类属性需要实现其相对应set、get方法。只要您明白了类的本质,这些应该都不是问题。祝您好运。
012019-05-19 -
逆风
2019-05-19
还有,这里是手动调用KVO,这样可以在Setter方法里,定制我们需要的功能。如果不手动的话,是不需要
willChangeValueForKey和didChangeValueForKey方法的。
00
相似问题