请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为啥有些方法需要在m文件里实现和有些需要实例对象来调用?

比如:
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context
-(void)didChangeValueForKey:

这俩方法。

正在回答

2回答

没有太明白您的意思,尝试作答下:

  1. person的观察对象(observer)是其自身,当系统监听到对象属性值的变化之后会调用observeValueForKeyPath ofObject context函数。需要自己在observer里实现它。当然observer也可以设置成其它对象。

  2. 你可以看看系统提供的@interface NSObject(NSKeyValueObserverNotification)API说明,我觉得监听实例的属性,实例对象来调用也很nice。其实你也可以试试用类对象来调用,与其对应的是类属性,我记得类属性在课程里有说明,注意类属性需要实现其相对应set、get方法。只要您明白了类的本质,这些应该都不是问题。祝您好运。


0 回复 有任何疑惑可以回复我~
  • 提问者 慕设计0203943 #1
    #手动掩面表情#
    这个是我自己学着学着搞糊涂了,忽然的迷糊。。。m文件里是对方法的实现,调用方法是run这个方法。
    我得重新复习下前面的内容。。。
    回复 有任何疑惑可以回复我~ 2019-05-19 18:30:54
逆风 2019-05-19 11:25:53

还有,这里是手动调用KVO,这样可以在Setter方法里,定制我们需要的功能。如果不手动的话,是不需要

willChangeValueForKey和didChangeValueForKey方法的。


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信