我只是想确认一下无法一次性删除多个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];
}

10-08 06:24