往往是,一个对象释放了多次,即多次释放。多为粗心所致。
还有一种过渡释放,很隐蔽。查了很久才知道!
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
self.arrCollectionData=[userDefault objectForKey:@”TV_Collection”];
注意:这种写法是错误的!因为,我并没有自己将内存分配给arrCollectionData,这样,编译器对该块内存有控制权,而不是我!
所以,某个时刻,我不能保证arrCollectionData有效。
我更不能在程序最后,显示的进行[_arrCollectionData release];操作!
本着,谁分配谁管理的原则!
为了保证正确性,我改写成了如下形式!
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
NSArray *dictSorted=[userDefault objectForKey:@”TV_Collection”];
self.arrCollectionData=[[NSMutableArray alloc] initWithArray:dictSorted];
转载于:https://www.cnblogs.com/Songxin/p/3772584.html
今天的文章signal SIGABRT分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7094.html