我只是想确认一下无法一次性删除多个KVO,而我必须单独发出
[self removeObserver:self forKeyPath:@"name"];
对于每个观察到的关键路径(即使观察者是自己)。我没有找到任何内容就拖了文档和SO。
最佳答案
那就对了。没有“内置”方法可以删除多个关键路径的多个观察者。
但是您可以使用类别来创建自己的方法,以执行所需的操作:
@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];
}