显示NSPlaceholderstring泄漏的工具

Ada*_*dam 4 iphone memory-leaks instruments

我正在尝试减少我的应用程序中的内存泄漏,所以我使用仪器来查找所有泄漏.我设法删除了几乎所有的泄漏,除了一个非常烦人的泄漏.

仪器告诉我,我有很多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
Run Code Online (Sandbox Code Playgroud)

storedHash定义如下:

@property(copy) NSString* storedHash;
Run Code Online (Sandbox Code Playgroud)

我尝试了我能想到的一切:

  • 我使用retain而不是copy
  • 我使用了NSString的自动释放分配(stringWithFormat)
  • 我尝试用自动释放池包装代码

以上都没有改变泄漏.(在某些情况下,泄漏的类型会发生变化,但仍然存在泄漏)

想法有人吗?

bbu*_*bum 5

你在哪里发布storedHash?你发布它dealloc吗?

注意,这NSPlaceholdeString是一个实现细节; 它是由类返回的实例NSString+alloc方法.