ios在存在之前移除观察者会引发异常

时间:2013-12-29 02:25:41

标签: ios objective-c

为了防止添加多个观察者,我在添加观察者之前删除了观察者,这是推荐的:iPhone - testing if a notification exists

[[self getPlayer] removeObserver:self forKeyPath:@"position"];
[[self getPlayer] addObserver:self forKeyPath:@"position" options:NSKeyValueObservingOptionNew context:nil];

但是,这样做会导致异常:__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__

关于如何检查关键路径的观察者是否已经存在的任何想法,如果是这样,不添加新的想法?

1 个答案:

答案 0 :(得分:7)

添加一个布尔值,跟踪您是否添加了观察者。添加后将其设置为true,并且只有在标志指示您已添加一个时才移除观察者。