只是在寻找确认没有办法一次性删除多个 KVO 并且我必须单独发布
[self removeObserver:self forKeyPath:@"name"];
对于每个观察到的关键路径(即使观察者是自己)。我已经搜索了文档和 SO,但没有找到任何东西。
只是在寻找确认没有办法一次性删除多个 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];
}