2009-07-02 67 views
0

我想在下面的上下文中使用KVO:可可触摸问题。在触摸序列的上下文中使用KVO

1)的touchesBegan:withEvent:方法我ALLOC /初始化的对象的实例,我然后经由KVO

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

2)在touchesEnded:withEvent:我将这个实例赋值给一个NSMutableArray并释放实例引用,因为NSMutableArray现在保留了它。我还必须通过removeObserver删除实例的oberver:forKeyPath:

这是有问题的,因为我现在已经失去了所有的观察,除非我再次将观察添加到气味不佳的数组元素。

有没有办法让观察者仍然附着在对象上,而不管谁拥有它?

感谢, 道格

+0

你能否解释一下为什么当你将对象分配给数组时,必须移除对象的观察者? – 2009-07-02 14:09:58

+0

在touchesBegan中完成的alloc/init:withEvent:通过父类的ivar完成。每当touchesBegan:withEvent:被调用时,会一遍又一遍地发生。在touchesEnded:withEvent:我将该实例传递给一个数组。数组随着时间的推移而增长/收缩。我需要观察者跟随实例,而不管目前是谁主张它。 – dugla 2009-07-02 16:49:34

回答

1

在Objective-C,你不“自己”的对象,你只是有它的索赔。您不需要仅仅因为NSMutableArray会保留实例就可以释放实例 - 您都可以对此声明。当您完成对象时,请以观察者身份移除自己并释放对象。当你完成NSMutableArray时,释放它。这样,一切都照顾好自己。