崩溃提示:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CALayerArray: 0x14df0bd0> was mutated while being enumerated.' 网上找了下,原因是因为一边遍历数组,又同时修改这个数组里面的内容,导致崩溃. for in 循环中的便利内容不能被改变, 是因为如果改变其便利的内容会少一个, 而系统是不会允许这个发生…
bug: 今天做项目的时候遇到了这样一个崩溃信息: 解决Collection <__NSArrayM: 0xb550c30> was mutated while being enumerated.-   2017-06-22 16:45:42.229 ViewTest[2638:c07] *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArra…
*** Collection <__NSArrayM: 0x600000647380> was mutated while being enumerated.…
崩溃提示:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <CALayerArray: 0x14df0bd0> was mutated while being enumerated.' 当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃,网上的方法如下: NSMutableArray * arrayTemp = xxx; NSArr…
当程序出现这个提示的时候,是因为你一边便利数组,又同时修改这个数组里面的内容,导致崩溃,网上的方法如下: NSMutableArray * arrayTemp = xxx; NSArray * array = [NSArray arrayWithArray: arrayTemp]; for (NSDictionary * dic in array) { if (condition){ [arrayTemp removeObject:dic]; } } 这种方法就是在定义一个一模一样的数组,便利数…
一,错误分析 1.崩溃代码如下: //遍历当前数组,判断是否有相同的元素 for (NSString *str in self.searchHistoryArrM) { if ([str isEqualToString:historyStr]) { NSLog(@"%@====>%@",self.searchHistoryArrM ,str); [self.searchHistoryArrM removeObject:str]; } NSLog(@"%@",s…
原文网址:http://www.jianshu.com/p/ad80d9443a92 支持原创,如需转载, 请注明出处你是不是以为你真的懂For...in... ??哈哈哈哈, 我也碰到了这个报错 .究其原因, 顾名思义 "在枚举的时候发生了变化"for...in...利用了快速枚举NSFastEnumerate当我们想要改变数组变量中的数据或者删除数组中的数据的时候,不能用for...in... 应该是Objective-C中的foreach循环与Java中的相似,在内部是用iter…
*** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x17542520> was mutated while being enumerated.' 从字面上不难理解,Crash的原因在于我们一边遍历数组,一边修改该数组数据.例如:      NSMutableArray *OriginalArray = [NSMutableArray…
Collection was mutated while being enumerated…
lldb报错:Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x7f9a5a47dda0> was mutated while being enumerated.' bug代码: //判断是否存在,存在就删除 for (NSDictionary *dic in userAccountPwdMutalDatas) { if ([dic obj…
一.前言 在日常开发中或者测试过程中,我们的应用可能会出现Crash的问题.对于这类问题我们要抱着零容忍的态度,因为如果线上出现了这类问题,将会严重影响用户的体验. 如果Crash出现的时候恰好是在开发过程中,那么开发者可以根据Xcode的调用堆栈或者控制台输出的信息来定位问题的原因.但是,如果是在测试过程中的话就比较麻烦了.常见的两种解决方案是: 直接把测试手机拿来连接Xcode查看设备信息中的日志. 需要测试同学给出Crash的复现路径,然后开发者在调试过程中进行复现. 不过,以上两种方式都…
//一.代码 NSArray *array = [self.dataList mutableCopy]; 或 NSArray *array = [NSArray arrayWithArray:self.dataList]; ) { for (ChatHeader *header in array){ //遍历 if (currConact.userid == header.curContact.userid){ RSLog(@"退出群组删除好友消息:%@",header); self.…
1. 解析详情页(是webView)遇到的3个问题: 1.图片太大,超出屏幕范围 2.怎么在webView上面添加一行文字 3.文字太小 1.解决方法 webView.scalesPageToFit =YES; 2.字符串拼接html代码 3.解决方法 设置代理 - (void)webViewDidFinishLoad:(UIWebView *)webView{ [webView stringByEvaluatingJavaScriptFromString:@"document.getEleme…
我们在遍历可变数组时,最好不要做删除数组中元素的操作. 因为删除操作可能会引起数组容量的变化,导致数组越界等问题. 以前在使用for循环遍历的时候遇到过这个问题. 当时的做法是使用enumerateObjectsUsingBlock: ,但是这次又遇到这个问题时,顺便好好的测试了一下 for.for in.enumerateObjectsUsingBlock:. 实验结果如下: NSMutableArray *array = [NSMutableArray arrayWithArray:@[@"…
Player.CCB由body和arm两部分组成,它们都开启物理使能. 在GameScene.ccb中新建一个物理对象,将Player.ccb拖入该对象.此时编译运行App均正常. 然后继续添加其他物理对象Wall.ccb组成屏幕边界,这时App运行发生错误,log为: Collection <__NSArrayM: 0x78f97730> was mutated while being enumerated 发现源代码中断在场景的初始化方法中,该方法的功能是递归调用场景中每个子CCNode的…
在oc中用for in遍历可变数组时,不能修改删除新增元素,因为for in遍历是枚举遍历,在遍历的过程中不能修改容器里的值. NSMutableArray *arr=[NSMutableArray arrayWithObjects:@"1",@"2",@"3", nil]; for (NSString *str in arr) { if ([str isEqualToString:@"1"]) { [arr addObjec…
iOS开发中常见的异常包括以下几种NSInvalidArgumentExceptionNSRangeExceptionNSGenericExceptionNSInternallnconsistencyExceptionNSFileHandleOperationException NSInvalidArgumentException非法参数异常是objective-C代码最常出现的错误,所以平时写代码的时候,需要多加注意,加强对参数的检查,避免传入非法参数导致异常,其中尤以nil参数为甚. 1.集…
1.对于集合中对象数很多的情况下,for in 的遍历速度非常之快,但小规模的遍历并不明显(还没普通for循环快) 2. 如果在for in 循环里,对这个数组进行了修改的话,无论是增,删,修改数组元素位置,都会扔一个异常出来,枚举的过程中数组发生了突变(<__NSArrayM: 0xa4fc000> was mutated while being enumerated.),但是枚举器可以察觉. 3.Value查询index的时候, 面对大量的数组推荐使用 enumerateObjectsWi…
1.错误信息: 2015-10-28 10:39:55.933 XFW[2696:55982] *** Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-3347.44.2/UITableView.m:7524 (lldb) 错误原因: 返回cell的代码放在括号的范围不对,看下周围代码的作用域.有时括号太多,容易放错代码. 2.错误信息…
源码版本:JDK 1.7. 集合 Collection,根据已知的内容可以知道有List.Set.Map(严格说,Map不属于Collection)等大类. 先查看 Collection, public interface Collection<E> extends Iterable<E> JDK说明如下: /** * The root interface in the <i>collection hierarchy</i>. A collection *…
Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合  (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏有对性能方面问题的细微考虑. 对于速度的追求 首先,是一个免责声明: 相比其它问题而言,一个 Objective-C 方法原始的速度是你在编程时最后才需要考虑的问题之一 – 区别就在于这个问题够不上去同其它更加需要重点考虑的问题进行比较,比如说代码的清晰度和可读性. 但速度的次要性并不妨碍我们去理解…
Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合  (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏有对性能方面问题的细微考虑. 对于速度的追求 首先,是一个免责声明: 相比其它问题而言,一个 Objective-C 方法原始的速度是你在编程时最后才需要考虑的问题之一 – 区别就在于这个问题够不上去同其它更加需要重点考虑的问题进行比较,比如说代码的清晰度和可读性. 但速度的次要性并不妨碍我们去理解…
大纲 NSArray NSMutableArray 快速枚举 NSArray NSArray是一个静态数组,也就是一个不可变数组,一旦创建以后,就不能进行添加,删除或者修改其中的元素.NSArray继承自NSObject,用于管理一系列有序对象的集合,可以通过对象在数组中的位置(索引)来访问对象.和C语言一样,数组中元素的索引是从0开始的.数组中既可以用于存放同一个类的对象,也可以用于存储不同类的对象.但不能存放nil,nil被视为数组结束的标志,系统会在方法末尾自动生成. 切记:NSArray…
1, NSGenericException错误 Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 2, Undefined symbols for architecture i386 常见错误描述: Undefined symbols for architecture i386: “_OBJC_CLASS_$_XXX”, referenced f…
内存持续增加的释放解决办法 最近修改一个用到MKMapView的项目,内存一直占用过多,每次拖拽地图时还会增加占用,且一直无法释放. 经过两天的排查,最后锁定是创建的self.map对象在加载地图的时候,不断申请内存,但在View的生命期内不会释放. 查阅资料了解到removeFromSuperview可以释放内存,但remove的话地图会从父View上消失. 最后解决办法是在- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated…
众所周知,default是java的关键字之一,使用场景是配合switch关键字用于条件分支的默认项.但自从java的jdk1.8横空出世以后,它就被赋予了另一项很酷的能力——在接口中定义非抽象方法. 众所周知,java的接口只能定义静态且不可变的常量或者公共抽象方法,不可能定义非抽象的具体方法.但自从jdk1.8横空出世以后,它就被default关键字赋予了另一项很酷的能力——在接口中定义非抽象方法.好了不废话了,看具体例子吧: 1.父接口Iterable,定义了两个default方法forE…
原文:http://rypress.com/tutorials/objective-c/data-types/nsset NSSet NSSet, NSArray, and NSDictionary are the three core collection classes defined by the Foundation Framework. An NSSet NSSet, NSArray, 和 NSDictionary是Foundation框架中三个主要集合类.一个NSSet对象是一个静态…
在 Objective-C 2.0 中提供了快速枚举的语法,它是我们遍历集合元素的首选方法.它具有以下优点: 比直接使用 NSEnumerator 更高效: 语法非常简洁: 如果集合在遍历的过程中被修改,它会抛出异常: 可以同时执行多个枚举. 一.解析 NSFastEnumeration 协议 在 Objective-C 中,我们要想实现快速枚举就必须要实现 NSFastEnumeration 协议,在这个协议中,只声明了一个必须实现的方法: /** Returns by reference a…
1. UIImage imageWithContentsOfFile卡顿 [[UIImage alloc] initWithContentsOfFile 卡顿 2.uitableview scroll to top NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0]; [_commentsTab scrollToRowAtIndexPath:indexPath atScrollPosition:UITableV…
Performance Now that we have a basic model for how things are working, let's consider some things that could go wrong that would make it slow. That will give us a good idea what sorts of things we should try to avoid to get the best performance out o…