iphone – 调用[myString release]不会减少[myString retainCount]

iphone – 调用[myString release]不会减少[myString retainCount],第1张

概述我有以下情况,这似乎导致我的iPad应用程序泄漏内存. 我有一个字符串属性的类… @property(nonatomic,retain) NSString * synopsis; 我从一些HTTP响应设置字符串属性,来自JSON或XML响应. 此时,概要对象的保留计数为1. 但我有这种情况: 我将概要保存到本地sqlite数据库,然后我想从内存中释放它,但我有一种奇怪的情况,从我的对象中调用[sy 我有以下情况,这似乎导致我的iPad应用程序泄漏内存.

我有一个字符串属性的类…

@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]所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1084772.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存