完美的KVO包括两部分:正确添加观察者和正确移除观察者。
故事:
如果(object.thumbnail_pic_url)
[object addObserver:cell forKeyPath:@“thumbnail_picture”选项:0上下文:NULL];
问题:删除对象后,如何从对象中正确删除所有已注册键路径的观察者(单元格)?
实际上,这是一个大问题,可以分为两个小问题:
如果(object.thumbnail_pic_url)
[对象removeObserver:cell for KeyPath:@“thumbnail_picture”];
而且我也不能盲目地删除未注册键路径的观察者—异常(无法将键路径“thumbnail_picture”的观察者从中移除,因为它没有注册为观察者。)将被抛出。
最佳答案
an0,
有一个NSManagedObject方法仅用于执行删除定时功能:-prepareForDeletion。
它的文档声称:“您可以实现此方法以执行删除对象之前所需的任何操作,例如在关系断开之前进行自定义传播,或使用键值观察来重新配置对象。”
您还可以查看使用:-willTurnIntoFault和-didTurnIntoFault。但是我认为使用-prepareForDeletion将使您更加满意。
安德鲁
P.S.该方法记录在类引用中。我谨建议您阅读文档以节省时间。
关于ios - 如何为NSManagedObject做完美的KVO?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7604256/