iOS数组越界

数组越界就是假如你的下标总数现在为32个,然后你在下一秒又执行了一个方法要从50个数据里进行赋值啊筛选之类的,而你此时数组里的值为32个,50的数据还没有请求到,往往会出现数组越界的崩溃信息,大概是这样的

-[__NSArrayI objectAtIndex:]: index 100 beyond bounds [0 .. 9]‘

具体的解决方式我们通常会选择吧数组做个判断入return nil;

虽然在大多数情况下是可以的,但是多少并不严谨,如果你设置了一个事件循环执行的nstimer而你的数据量又很大,数组数量总是在变化,列入地图上的大头针,你边走边改变,那么久需要多NSArray或者NSMutableArray自己进行一个方法的扩展,我们来替代[_datasourceArray objectAtIndex:indexPath.row]这个方法.

下面是从一个大神那里看来的一个方法 我试了试对我很有帮助!

时间: 2024-07-29 12:52:47

iOS数组越界的相关文章

iOS 数组越界 Crash处理经验

我们先来看看有可能会出现的数组越界Crash的地方: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { WelfareItem *item = [_datasourceArray objectAtIndex:indexPath.row];//有可能会越界,你在下拉刷新时会用[_datasourceArray removeAllObjects],这时你又点了某个

第17月第7天 iOS 数组越界,防Crash处理

1. 上面方法已经可以避免crash,为了避免冗余的代码,写一个NSArray的分类,利用runtime替换NSArray的对象方法objectAtIndex:,在这里进行判断,捕获异常: #import <Foundation/Foundation.h> @interface NSArray (Crash) @end /*** ---------------分割线--------------- ***/ #import "NSArray+Crash.h" #import

iOS 关于数组越界的解决方法

所谓的数组越界,就是假如你的下标总数现在为32个,然后你在下一秒又执行了一个方法要从50个数据里惊醒赋值啊 筛选之类的 而你此时数量为32 50的数据还没有请求到 往往会出现数组越界的崩溃信息 大概是这样的 -[__NSArrayI objectAtIndex:]: index 100 beyond bounds [0 .. 9]'  具体的解决方式我们通常会选择把数组做个判断列如 return nil; 虽然在大多数情况下是可以的,但是多少并不严谨,如果你设置了一个事件循环执行的NStimer

iOS如何彻底避免数组越界

我们先来看看有可能会出现的数组越界Crash的地方: ? 1 2 3 4 5 6 7 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {     WelfareItem *item = [_datasourceArray objectAtIndex:indexPath.row];//有可能会越界,你在下拉刷新时会用[_datasourceArray remove

QRCode 数组越界异常

因为需求的缘故需要解析出ios二维码的地址,把解析的地址传到按钮上 把功能写好之后用几张二维码测试没问题后提交到svn上,第二天生产环境正好发版,发现有个应用的按钮点了一直没反应,看了下控制台发现报错 居然是数组越界...纠结了好久.最后点到那个二维码看看有什么特别之处 一切尽在无言中(我擦...居然是1000多像素的二维码,你逗我呢)...

iOS数组使用

相关链接: ios数组基本用法和排序 NSArray 排序汇总 iOS 数组排序方法 IOS-筛选数组内的元素 关于EnumerateObjectsUsingBlock和for-in之间的较量 [iOS开发技术]NSPredicate谓词的用法 数组过滤

谨防数组越界!

今天第一次对数组越界问题有了深切的感受,数组越界如果在Release版本中运行也不会报错,如果是Debug版本的话,若直接通过常量数值引用数组下标会被检测到数组越界,若通过变量引用数组下标也是不会被检测到的!!! 测试下面的代码, 1 #include <stdio.h> 2 3 int main(void) 4 { 5 int arr[1][1] = {20}, brr[1] = {1}, y = 5; 6 7 //printf("%d\n", arr[5][0] ==

数组越界

1. 找出下列代码的错误 void test() { char string[10]; char *str="0123456789"; strcpy(string,str); }字符串str需要11个字节才能存放下(包括末尾的'\0'),而string只有10个字节的空间:strcpy会导致数组越界. void test() { char string[10]; char str[10]; int i; for(int i=0; i<10; i++) { str[i]='a';

数组越界保护与消息传递black机制

数组越界保护if(index.row <= [array count]) 发送消息[[NSNotificationCenter defaultCenter]     postNotificationName:@"chuandi" object:self]; 接收消息 自己写个action的动作[[NSNotificationCenter defaultCenter] addObserver:self