【问题标题】:Avoid memory leak when using array element in iPhone app在 iPhone 应用程序中使用数组元素时避免内存泄漏
【发布时间】:2011-12-17 19:43:33
【问题描述】:
NSString *hostStr2 = [[NSString alloc] initWithFormat:@"http://%@/getplaylist.php?ip=%@",yourip,restip];
NSLog(@"XMLAppDelegate checkstatusthread call to php for status,playlist and nowplaying XML's %@" ,hostStr2);
NSData *dataURL2 =[NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr2 ]];  
[hostStr2 release];

NSString *playlistdata=[[NSString alloc] initWithData:dataURL2 encoding:NSASCIIStringEncoding];
NSArray *ipItemsArray;

// memory leak showing at below line    
ipItemsArray =[playlistdata componentsSeparatedByString:@"|^|"];

[playlistdata release];

我在 ipItemsArray 中存储的是一个用分隔符“|^|”分隔的大型 XML 数据。 问题是当我运行它时,它会在这个数组中产生内存泄漏。 是否有任何其他类型的数组可以使用,或者有人可以更好地优化此代码,以便我可以摆脱发生的内存泄漏。

【问题讨论】:

  • 是什么让你认为那条线路在泄漏?你用过什么工具?我在这段代码中看不到任何内存泄漏,有问题的行是创建一个自动释放的数组。
  • 同意以上观点。代码很好,但如果 ipItemsArray 是您想要保留的 IVAR,则需要在创建自动释放数组时保留它。
  • 在 Profile 下的 XCode 中,我使用了名为 Leaks 的工具来查找泄漏。当我在此配置文件下运行它时,它在上面的行代码中显示内存泄漏。顺便说一句,这仅在我们将其连接到 iPhone 并使用此分析工具时才有效。

标签: iphone arrays xcode memory-leaks


【解决方案1】:

最好给那个数组分配内存。并在dealloc方法中释放它

【讨论】:

  • 我认为这对于我正在开发的那种应用程序来说不会更好,因为它存储两个 XML 并且需要大尺寸或有时小尺寸。无论如何,谢谢。
猜你喜欢
  • 2011-10-10
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
  • 2012-10-22
  • 2016-03-29
  • 2011-02-24
  • 2011-01-05
  • 1970-01-01
相关资源
最近更新 更多