0

只是在寻找确认没有办法一次性删除多个 KVO 并且我必须单独发布

[self removeObserver:self forKeyPath:@"name"];

对于每个观察到的关键路径(即使观察者是自己)。我已经搜索了文档和 SO,但没有找到任何东西。

4

1 回答 1

1

这是正确的。没有“内置”方法可以删除多个关键路径的多个观察者。
但是你可以使用类别来创建你自己的方法,做你想做的事:

@interface NSObject (ExtendedKeyValueObserving)
- (void)removeObserver:(NSObject *)observer forKeyPaths:(NSArray *)keyPaths;
@end
@implementation NSObject (ExtendedKeyValueObserving)
- (void)removeObserver:(NSObject *)observer forKeyPaths:(NSArray *)keyPaths {
    for (NSString *keyPath in keyPaths)
        [self removeObserver:observer forKeyPath:keyPath];
}
于 2013-07-06T11:40:19.903 回答