免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1709 | 回复: 0
打印 上一主题 下一主题

core data 添加对象,过度release bug 总结。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-10 18:59 |只看该作者 |倒序浏览
core data 添加对象,过度release bug 总结。






现象:

在订阅按钮按下后,发生崩溃,系统给出提示:exc_bad_access。
debug代码,在添加到core data代码行之前和之后,添加断点,debug均能通过。
但是打过订阅方法执行完后报错。

原因分析:

追查添加到core data行中的内容,发现在得到core data对象中,使用了一个方法叫做newSubscribeDataEntity.该方法的作用是从core data中返回一个空的实体(自己理解的),该方法应该是autorelease,但是所在函数名用了new,造成了只有勿以为该方式是new出来的,然后对ta进行了手动的release。造成了exc_bad_access。

"debug代码,在添加到core data代码行之前和之后,添加断点,debug均能通过。" 一开始以为能够通过,所以觉得并不是添加到core data行出现的问题。目前个人觉得造成该原因可能是由于,core data与操作是在其自己独立的线程中完成,并且应该是相对main函数,有一定的延时机制。

解决方法:

1.删除手动release行代码。
2.应该修改newSubscribeDataEntity对象名称。如果不是返回以new、alloc、retain、copy实例化的对象,不要使用这些单词开头的名称。

PS:nszombie 使用 (xcode 4.xx)

edit schema -->run xx.app --> Diagnostics --> Enable Zombie Objects
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP