runtime实现数组中不能添加nil

通过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

时间: 2024-10-13 21:25:12

runtime实现数组中不能添加nil的相关文章

mongodb中$push和$pull的使用,向内嵌的数组中删除和添加元素

假设在集中在存在如下数据: { "_id" : ObjectId("5cb6e53cb4276075a2262f5b"), "results" : [ { "current" : 7.45, "origin" : 0, "target" : 100, "title" : "组织kr", "type" : 2, "dir

动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

 1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /************************************************************************/ /*数组的结构体类型                                                    */ /*******************

随机的将1-100之间的数据添加到 ArrayList数组中

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace ConsoleApplication2 { class Program { //随机的将1-100之间的数据添加到 ArrayList数组中 static void Main(string[] args) { ArrayList arrlist = new

数组的创建/查找数组里面的内容/添加数组中元素/使用指定的字符串把数组链接起来/判断数组内是否有指定的数组元素/四种遍历进行输出数组中的元素有哪些

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //创建数组 //1.快速创建数组@[] NSArray*[email protected][@"month",@"tue",@" wed",@"fir"]; //2,创建空的数组 NSArray*arr=[[NSArray a

在数组中添加一个元素进行(替换 删除 插入)

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //可变数组继承不可变数组 //1.创建  设定元素个数进行创建 NSMutableArray *mutArr=[NSMutableArray arrayWithCapacity:7]; //2.向数组中添加一个元素 NSArray *[email protected][@"MON",@

javascript 数组,数组中添加新元素 push() ,unphsh() 相当于Add()

<1> var   a   =   [];     //建立数组 push   方法 将新元素添加到一个数组中,并返回数组的新长度值.

08.18 javascript 06 数组 数组的概念 创建数组 读取数组中的元素 稀疏数组 添加和删除数组的元素 数组遍历 多维数组 数组的方法 类数组对象 作为数组的字符串

# 数组 ### 数组的概念 * 数组是值的有序集合 * 数组中的每个值 称之为 元素 * 每个元素可以是任意数据类型的值 * 每个元素都有索引(下标) * 元素的索引从0开始,按照顺序递增. 元素最大的索引 2^32-2 ### 创建数组 * 直接量 `[]` * 构造函方式  `new Array()` ### 读写数组中的元素 * 数组名[索引] ### 稀疏数组 * js数组的索引是连续的 * 没有连续的给元素赋值 , 没有赋值的元素会自动赋值 undefined ### 添加和删除 数

关于将多个json对象添加到数组中的测试

如果用数组push添加不到数组中的,这个我也不知道是为什么?然后我选择了另一种发放就是从数组出发,逆向添加 最后的数组是这样的: data1=['公司1','公司2','公司3','公司4']; arrVal=[355,310,520,260]; data2=[ {value:335, name:'公司1'},{value:310, name:'公司2'}, {value:234, name:'公司3'}, {value:1548, name:'公司4'}]; 这样是不行的: for(var i

在一个升序数组中添加最少的数字,使得从1--n之间所有的数都能用数组中几个数的和表示

一个Java的笔试题上面遇到的题,当时没有做出来. 拆分: 序列升序 1--n所有的数都要能表示 用数组中数字的和表示 添加最少的数字 思路:这个要先从小的数开始表示,因为大的数可以用小数表示. 1--n是一个连续序列,有个特点是1+2+4=7,用1,2,4可以表示1--7之间的数字.1+2+4+8=15可以表示1--15之内的数字.1+2+4+8+16=31.规律很明显了,每次加上和的后一个数. 1+2+5=8能表示1--8的数字吗?答案是不能,因为1+2=3,而后面添加的是5,所以数字4不能