为了防止添加多个观察者,我在添加观察者之前删除了观察者,这是推荐的: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__
关于如何检查关键路径的观察者是否已经存在的任何想法,如果是这样,不添加新的想法?
答案 0 :(得分:7)
添加一个布尔值,跟踪您是否添加了观察者。添加后将其设置为true,并且只有在标志指示您已添加一个时才移除观察者。