0

我想在以下情况下使用 KVO:

1) 在 touchesBegan:withEvent: 我分配/初始化一个对象的实例,然后我通过 KVO 观察

我的目的是观察对象在其整个生命周期中的各种行为。

2) 在 touchesEnded:withEvent: 中,我将此实例分配给 NSMutableArray 并释放实例引用,因为 NSMutableArray 现在保留它。我还必须通过 removeObserver:forKeyPath 删除实例的 oberver:

这是有问题的,因为我现在已经失去了所有观察,除非我再次将观察添加回闻起来很糟糕的数组元素。

有没有办法让观察者保持依附于对象而不管谁拥有它?

谢谢,道格

4

1 回答 1

1

在 Objective-C 中,你并不“拥有”一个对象,你只是拥有它的所有权。您不需要仅仅因为 NSMutableArray 保留它就释放该实例——你们都可以对它拥有声明。完成对象后,将自己作为观察者移除并释放对象。完成 NSMutableArray 后,释放它。这样,一切都会自己照顾。

于 2009-07-02T14:14:30.580 回答