![iphone – 调用[myString release]不会减少[myString retainCount],第1张 iphone – 调用[myString release]不会减少[myString retainCount],第1张](/aiimages/iphone+%E2%80%93+%E8%B0%83%E7%94%A8%5BmyString+release%5D%E4%B8%8D%E4%BC%9A%E5%87%8F%E5%B0%91%5BmyString+retainCount%5D.png)
我有一个字符串属性的类…
@property(nonatomic,retain) Nsstring * synopsis;
我从一些http响应设置字符串属性,来自JsON或XML响应.
此时,概要对象的保留计数为1.
但我有这种情况:
我将概要保存到本地sqlite数据库,然后我想从内存中释放它,但我有一种奇怪的情况,从我的对象中调用[synopsis release]不会将保留计数减少到0.
(voID) save{ NSLog(@"synopsis before save retainCount=%d",[synopsis retainCount]); [self savetoDb:synopsis withKey:@"synopsis"]; NSLog(@"synopsis after save retainCount=%d",[synopsis retainCount]); [synopsis release]; NSLog(@"synopsis after release retainCount=%d",[synopsis retainCount]); synopsis=nil;} 在控制台中,我得到:
synopsis before save retainCount=1synopsis after save retainCount=1synopsis after release retainCount=1
这怎么可能?我在模拟器或设备上运行相同的结果.
解决方法 请勿依赖RETAINCOUNT!对人类而言,它不是对象所有权的准确度量.你不知道什么是调用保留并在框架中幕后发布.
Cocoa中的内存管理很简单:
>如果您分配/初始化或复制对象,请确保在某个时刻调用它.>如果你想保留一个对象,请调用retain – 但也要确保在某个时候调用release.
@H_404_49@ 总结以上是内存溢出为你收集整理的iphone – 调用[myString release]不会减少[myString retainCount]全部内容,希望文章能够帮你解决iphone – 调用[myString release]不会减少[myString retainCount]所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)