ios关于程序出现奇奇怪怪错误记录及解决方案

发图据说点击率高😄

最近很长一段时间在解决以前程序中存在的BUG,一直在优化优化,从最开始客户反映的6Plus在后台前台切换过程中程序出现闪退开始,我曾经尝试着从苹果官网后台获取Crash报告,结果我神奇的发现,我的错误报告是0,这点很让我意外,然而测试也未测出错误的存在,在这时候接受了某个网友的建议集成第三方错误收集的SDKBugtags,从这个后台我发现了前篇一律的崩溃错误提示

Signal 13 was raised. SIGPIPE

我查到了对这一错误的描述:

管道另一端没有进程接收数据,导致管道破裂而崩溃。
socket或管道,当自己主动关闭,资源被苹果系统回收,对方关闭时,当再次通过socket或pipe的文件描述符发送消息会出现系统级别的崩溃(管道破裂,signal 13。它的级别和内存使用或释放异常一直,由于是系统级别崩溃,所以不能通过@try{}@catch (NSException *exception) {
}捕获到异常,而是直接app崩溃)。
原文链接
http://blog.csdn.net/jia12216/article/details/50844013

这篇博文介绍了出现了这种错误的解释,简单通俗的解释就是服务端回传过来给客户端数据时候,客户端没有了接受者,导致了错误,而且原文也给出了解决方案
方案一:signal(SIGPIPE, SIG_IGN) 忽略此信号,代码具体位置写在main函数中即可

方案二:(setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, SIG_IGN, sizeof(int));
忽略具体的socket信号,sd为具体的socket

但是前两种方案我尝试了第一种(第二种并不适用,我项目中未自己写socket通信),结果显而易见的,然并卵了!!!

这种错误信号是无法忽略掉的,当后台停滞很久再次进入程序还会出现这个闪退问题,经过多方查资料我又找到了另一种方案

方案三:

        sigset_t signal_mask;
        sigemptyset (&signal_mask);
        sigaddset (&signal_mask, SIGPIPE);

原理也是忽略SIGPIPE信号,这种情况确定解决了这个问题,我在测试过程中后台久置并未出现闪退的问题,一定注意的一点事测试需在release状态下。

我以为我已经解决了这个问题,结果在我集成新的BUG收集SDK(BugHD,原因bugtags免费15天使用)中我又发现了报出了:

1.Signal 6 was raised
错误原因:系统报错
可能导致的原因有以下几种:
对象释放了多次
储存错误
调用了没有实现的方法

2.Signal 11 was raised
错误原因:无效内存引用
可能导致的原因有以下几种:
向一个已经释放的对象发送了消息
在多线程中对一个已经释放的对象没有进行同步操作
没有对变量进行初始化而直接访问这个无效对象

我的内心其实是奔溃的,痛定思痛以后认真的分析了错误的原因:

由于程序进入后台后一段时间,程序被系统挂起,内存回收,导致部分对象内存中已经释放,而由于代码中的循环引用的出现,导致对象没被释放,再次进入前台接收到对象信号,肯定会出现上述错误。

我查看了代码中出现的问题,主要就是这两种问题
1.block中使用self
2.添加了通知,而当本类销毁的时候未移除通知。

当我发现所有类代码中都存在的block中用self,我真的很奔溃,我无力吐槽了,外包的兄弟们长点心吧😄😄😄。。。

附block宏

define WeakObj(o) autoreleasepool{} __weak typeof(o) o##Weak = o;

类中@WeakObj(self);,然后直接用selfWeak即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,009评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,808评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,891评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,283评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,285评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,409评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,809评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,487评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,680评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,499评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,548评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,268评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,815评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,872评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,102评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,683评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,253评论 2 341

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,117评论 29 470
  • 1. 已存在 ,把canvas插入到 中,可显示图片 2.不存在 ,要把canvas转为dataurl,然后赋值给...
    龙黎_阅读 420评论 0 1
  • 10年前,第一次听到你的歌,就深深地爱上了。我不知道为什么,可能是仅仅是旋律和歌词就让我狂热不已。而如今,你在那边...
    NiGer林阅读 344评论 0 0
  • 自前几天读完杨绛先生的传记后,便开始读先生的著作《我们仨》。此书为回忆录著作,因此与先生的传记有较多重合,应该说先...
    未来不可知阅读 342评论 0 0