美文网首页
多次删除KVO崩溃

多次删除KVO崩溃

作者: 逍遥庄主 | 来源:发表于2019-03-15 15:12 被阅读0次

有时候回忘记多次添加删除kvo的监听,回出现catch
单个处理
利用@try{self removeObserver:self forKeyPath:@"name"}@catch(NSException *exception){nslog(@"多次删除")}

通用方法使用runtime

代码

.m文件
#import "NSObject +XYKVO.h"
#import<objc/runtime.h>
@implementation NSObject (XYKVO)

+ (void)load {
    [self switchMethod];
}
- (void) switchMethod {
    SEL removeSel = @selector(removeObserver:forKeyPath:);
    SEL xyRemoveSel = @selector(removeXYKVO:forKeyPath:);
    
    Method systemRemoveMethod = class_getClassMethod([self class], removeSel);
   Method xyRemoveMethod = class_getClassMethod([self class], myRemoveSel);

    method_exchageImplementations(systemRemoveMethod, xyRemoveMethod);
}
- (void) removeXYKVO:(NSObject *)observer forKeyPath:(NSString*)keyPath {
     @try {
        [self removeXYKVO:observer forKeyPath:keyPath];
    } @catch (NSException *exception) {nslog(@"多次删除")}
}




参考

相关文章

网友评论

      本文标题:多次删除KVO崩溃

      本文链接:https://www.haomeiwen.com/subject/cualmqtx.html