码迷,mamicode.com
首页 > 编程语言 > 详细

runtime实现数组中不能添加nil

时间:2017-08-23 15:04:03      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:ext   table   ble   tin   ring   mst   org   tor   from   

通过runtime的method_exchangeImplementations(Method m1, Method m2)方法,

可以进行交换方法的实现;一般用自己写的方法来替换系统的方法实现

例如:数组(字典)中不能添加nil,如果添加程序会崩,用自己的方法替换系统防止系统崩溃 

下面直接上代码

#import "NSMutableArray+YSExtension.h"
#import <objc/runtime.h>

@implementation NSMutableArray (YSExtension)

+ (void)load {
        Method orginalMethod = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), @selector(addObject:));
       Method newMethod = class_getInstanceMethod(NSClassFromString(@"__NSArrayM"), @selector(newAddobject:));
       method_exchangeImplementations(orginalMethod, newMethod);
}

- (void)newAddobject:(id)obj {
       if (obj != nil) {
          [self newAddobject:obj];
      }else{
        [self newAddobject:@""];
    }
}

@end

runtime实现数组中不能添加nil

标签:ext   table   ble   tin   ring   mst   org   tor   from   

原文地址:http://www.cnblogs.com/lcl15/p/7417688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!