【发布时间】:2011-03-13 22:06:48
【问题描述】:
我有以下情况,似乎是导致我的 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=1
synopsis after save retainCount=1
synopsis after release retainCount=1
这怎么可能?我在模拟器或设备上运行时得到相同的结果。
【问题讨论】:
-
mipadi 可能是对的,但是如果保留计数为 1 并且您在其上调用了 release,那么您已经删除了该对象。因此,retainCount 应该在无效对象上返回任何有用的值是没有意义的。
-
好的。我将假设概要对象随后被释放。有没有办法确定是否已被释放?
标签: iphone objective-c ipad nsstring