美文网首页
iOS数组越界

iOS数组越界

作者: 七秒归零 | 来源:发表于2021-12-29 22:55 被阅读0次

数组的越界处理:

    对NSArray添加分类,使用runtime的hook,替换对应的方法。

     self.dataArray[4] 的下标取值,对应的是数组的objectAtIndexedSubscript方法

    objectAtIndex的取值,对应的是数组的objectAtIndex方法

    使用runtime对两个方法进行拦截替换,就可以实现数据的异常处理。

    load方法中是使用GCD的单例方法,是避免用户错误调用出现多次交换,导致的错误。

+ (void)load{

    staticdispatch_once_tonceToken;

    dispatch_once(&onceToken, ^{

        MethodoriMethod =class_getInstanceMethod(NSClassFromString(@"__NSArrayI"),@selector(objectAtIndex:));

        MethodswiMethod =class_getInstanceMethod(NSClassFromString(@"__NSArrayI"),@selector(lg_objectAtIndex:));

        method_exchangeImplementations(oriMethod, swiMethod);

        MethodoriMethod1 =class_getInstanceMethod(NSClassFromString(@"__NSArrayI"),@selector(objectAtIndexedSubscript:));

        MethodswiMethod1 =class_getInstanceMethod(NSClassFromString(@"__NSArrayI"),@selector(lg_objectAtIndexedSubscript:));

        method_exchangeImplementations(oriMethod1,swiMethod1);

    });

}

// 交换的方法

- (id)lg_objectAtIndex:(NSUInteger)index{

    if(index >self.count-1) {

        NSLog(@"数组越界 -- ");

        returnnil;

    }

    return [self lg_objectAtIndex:index];

}

- (id)lg_objectAtIndexedSubscript:(NSUInteger)idx {

    if(idx >self.count-1){

        NSLog(@"取值越界了,请记录");

        returnnil;

    }

    return [self lg_objectAtIndexedSubscript:idx];

}

相关文章

  • iOS--再也不用担心数组越界

    iOS--再也不用担心数组越界 iOS--再也不用担心数组越界

  • iOS 数组越界的处理和优化方案。

    iOS开发中最常见的列表数据,必须使用数组,但是使用数组总会出现数组越界的情况,下面列出三种优化数组越界的方式。 ...

  • ios开发之防数组越界

    ios开发中,不免会遇到数组越界的问题,而当数组越界时往往会导致程序的崩溃,结局的方法之一就是在数组的分类中使用r...

  • iOS Crash三部曲~之二常见Crash

    1 越界 1.1 数组越界 第1类崩溃就是越界问题,最常见的就是数组越界。 崩溃信息: 分析: 可以看出当前数组的...

  • iOS防止数组越界

    可以直接hook数组的objectIndex方法进行判断,但是一定要记住,NSArray真正的类型是__NSArr...

  • iOS TableView 数组越界

    好久没写了。不应当的。 最近做项目碰到一个tableView老蹦的问题。 只要一刷新就蹦。上拉都不会。 让别人看也...

  • iOS array数组防越界

    iOS开发中常用到array数组,本文介绍一个防止数组越界的方法,分享给有需要的人;首先创建NSArray的Cat...

  • iOS数组越界的保护

    先上一段代码 在iOS中, 上述两种取数组元素的方法都会导致程序崩溃, 称为"数组越界", 那么在日常开发中,因为...

  • iOS 数组越界 Crash处理

    我们先来看看有可能会出现的数组越界Crash的地方; 上面代码是有可能会越界的;出现Crash也不好复现,发出去的...

  • iOS数组防止越界crash

    有时候项目中总是出现一些无法预知的情况,导致数组越界是程序crash,如果这种意外情况无法避免,那么只能从侧面采取...

网友评论

      本文标题:iOS数组越界

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