iOS 使用Category解决数组越界导致的Cash

直接上代码

//
//  NSArray+OOBKit.h
//  UITableViewBlockDemo
//
//  Created by LT on 16/11/15.
//  Copyright © 2016年 LT. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface  NSArray (OOBKit)
/**
 检查数组是否越界

 @param index 角标

 @return 检查是否越界和NSNull如果是返回nil
 */
- (id)objectAtIndexCheck:(NSUInteger)index;
@end
@interface NSMutableArray (OOBKit)
/**
 检查可变数组是否越界
 
 @param index 角标
 
 @return 检查是否越界和NSNull如果是返回nil
 */
- (id)objectAtIndexCheck:(NSUInteger)index;
@end

//
//  NSArray+OOBKit.m
//  UITableViewBlockDemo
//
//  Created by LT on 16/11/15.
//  Copyright © 2016年 LT. All rights reserved.
//

#import "NSArray+OOBKit.h"

@implementation NSArray (OOBKit)
- (id)objectAtIndexCheck:(NSUInteger)index
{
    if (index >= [self count]) {
        return nil;
    }
    
    id value = [self objectAtIndex:index];
    if (value == [NSNull null]) {
        return nil;
    }
    return value;
}
@end
@implementation NSMutableArray (OOBKit)
- (id)objectAtIndexCheck:(NSUInteger)index
{
    if (index >= [self count]) {
        return nil;
    }
    
    id value = [self objectAtIndex:index];
    if (value == [NSNull null]) {
        return nil;
    }
    return value;
}
@end

使用示例

#import "NSArray+OOBKit.h"
    NSArray *arr=@[@"1",@"2",@"3"];
    NSLog(@"item=%@",[arr objectAtIndexCheck:3]);
    
    NSMutableArray *arr2=[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil];
    NSLog(@"item2=%@",[arr2 objectAtIndexCheck:3]);

访问越界数据是不会崩溃并返回nil

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,808评论 25 709
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,397评论 0 6
  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一种新的协议。它实...
    香橙柚子阅读 24,148评论 8 184
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,041评论 19 139
  • 三小时车程到达西峡谷,车搭载旅客去到三个点,因为下雨了,不能坐飞机,几分钟去到
    A盈盈一笑阅读 148评论 0 0