我想在以下背景下使用KVO:
1)在touchesBegan:withEvent:我分配/初始化一个对象的实例,然后我通过KVO观察
我的目的是观察物体在其整个生命周期中的各种行为。
2)在touchesEnded中:withEvent:我将此实例分配给NSMutableArray并释放实例引用,因为NSMutableArray现在保留它。我还必须通过removeObserver:forKeyPath:
删除实例的oberver这是有问题的,因为我现在已经失去了所有观察,除非我再次将观察结果添加到数字元素中,这个数据元素闻起来很糟糕。
有没有办法让观察者保持与物体的联系,无论谁拥有它?
谢谢, 道格
答案 0 :(得分:1)
在Objective-C中,你没有“拥有”一个对象,你只是对它有一个主张。您不需要仅仅因为NSMutableArray保留实例而释放实例 - 您可以对其进行声明。完成对象后,将自己移除为观察者并释放对象。完成NSMutableArray后,释放它。这样,一切都会照顾好自己。