[英]instruments showing NSPlaceholderstring leaks
我正在尝试减少我的应用程序中的内存泄漏,所以我使用仪器来查找所有泄漏。 我设法删除了几乎所有的泄漏,除了一个非常烦人的泄漏。
仪器告诉我,我有很多NSPlaceholderstring泄漏。 产生泄漏的代码(根据工具)是:
if (nil == storedHash)
{
NSString *description = [[NSString alloc] initWithFormat:@"1 = %@ 2= %d", uId, service];
self.storedHash = description; // This line is the leak according to instruments
[description release];
description = nil;
}
return storedHash
storedHash定义如下:
@property(copy) NSString* storedHash;
我尝试了我能想到的一切:
以上都没有改变泄漏。 (在某些情况下,泄漏的类型会发生变化,但仍然存在泄漏)
想法有人吗?
你在哪里发布storedHash
? 你是用dealloc
发布的吗?
请注意, NSPlaceholdeString
是一个实现细节; 它是NSString
的+alloc
方法返回的实例的类。
dealloc
方法怎么样? 你是否在dealloc方法中释放了storedHash? 如何检查if (nil == self.storedHash)
你应该用
@property(nonatomic, retain) NSString* storedHash;
而是复制。 @property(copy)
没有发布你的旧NSObject,你应该自己做:
if (nil == storedHash)
{
NSString *description = [[NSString alloc] initWithFormat:@"1 = %@ 2= %d", uId, service];
[self.storedHash release];
self.storedHash = description; // This line is the leak according to instruments
[description release];
// description = nil; // it's unnecessary
}
你也应该在dealloc中释放storedHash。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.