iOS Crash之NSGenericException

问题

1. foreach操作

NSGenericException这个异常最容易出现在foreach操作中,在for in循环中如果修改所遍历的数组,无论你是add或remove,都会出错,比如

uncaught exception 'NSGenericException',reason:'*** Collection <__NSCFDictionary:0x7071100> was mutated while being enumerated.

意思是在枚举时,集合数据被修改了。

原因就在这 "foreach",它的内部遍历使用了类似 Iterator进行迭代遍历,一旦元素变动,之前的元素全部被失效,所以在foreach的循环当中,最好不要去进行元素的修改动作,若需要修改,循环改为for遍历,由于内部机制不同,不会产生修改后结果失效的问题。

2. 读取数据文件失败

uncaught exception'NSGenericException',reason:Could not open database file at /var/mobile/media/iTunes_Control/iTunes/MediaLibrary.sqlitedb

3. 其他

 uncaught exception'NSGenericException',reason:UIPopoverPresentationController () should have a non-nilsourceView or barButtonItem set before the presentation occurs.

解决方法

1. 对于第一种情况,集合数据遍历元素时,若需要修改原元素,不要使用foreach,而使用for循环。

2. 对于第二种情况,检查数据库文件的有效性,包括是否存在。

3. 对于第三种情况,也是检查参数的有效性

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

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,195评论 0 13
  • 闷热,真是神奇的天气。今天“热唱了主角”。路旁边的树无精打采的站在一旁,树梢的叶子也失去了往日的活力,懒洋...
    指挥官阅读 227评论 0 3
  • 首先来看两首很出名都是关于元宵节约会的宋词。 去年元夜时,花市灯如昼。 月上柳梢头,人约黄昏后。 今年元夜时,月与...
    武陵笑笑生阅读 1,189评论 0 3
  • 1、拆书帮的来源: ​2009年,杭州阿里巴巴总部搬迁到新阿里园区,为了给近万名阿里人提供生活便利,阿里把星巴克、...
    MrLai阅读 1,031评论 3 19
  • 发现老王特别喜欢在有人在的时候,特别不顾及我的颜面,去发脾气。比如说秘书晚会,那天有个气球在我旁边爆了,她就在很多...
    小小番茄君阅读 181评论 0 0