objective-c - Objective c 中对象的潜在泄漏

标签 objective-c ios memory-management memory-leaks xml-parsing

在我的应用程序中的 xml 解析方法中发现字符委托(delegate)方法,我使用以下代码

NSString *Str =  [[[NSString alloc] initWithString:foundString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] ;

if ([weekNames containsObject:elementName]) {
  //  if (!settings) {
    //    NSMutableDictionary *dict1=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"",@"no",@"بسم الله الرحمن الرحيم",@"surah",nil];

      //  [weekDict insertObject:dict1 atIndex:0];             
    //}
    [array1 addObject:weekDict];
}
if ([elementName isEqualToString:@"DUA"]) {
    [weekDict addObject:duaDict];
}
if ([elementName isEqualToString:@"NO"]) {
    [duaDict setObject:Str forKey:@"no"];   
}
if ([elementName isEqualToString:@"SURAH"]) {
    [duaDict setObject:Str forKey:@"surah"];    
}
foundString=nil;**

如果我在分析应用程序中使用此代码,我会遇到潜在的内存泄漏。 如果我自动释放Str,它会释放太多次。 为什么会出现这样的情况。请任何人帮助我。 提前致谢

最佳答案

这个:

NSString *Str =  [[[NSString alloc] initWithString:foundString] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]

确实应该是:

NSString *Str =  [foundString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

您现在所做的是创建(分配/初始化)一个新的 NSString,然后立即泄漏它,因为您从未真正保存过指针。事实证明,您从一开始就从未真正需要过 NSString。

关于objective-c - Objective c 中对象的潜在泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8484551/

相关文章:

ios - SWIFT:尝试使用 objective c 类的委托(delegate)方法

ios - 索引 1 超出范围 [0 .. 0] 向下滚动时崩溃

ios - 使用 NSURLRequest 上传 Youtube 视频

c++ - 如何实现缓存友好的动态二叉树?

c# - 是否有 CPU 模拟器或一种方法来查看事物是如何在内存中创建和销毁的

objective-c - 我如何知道用户是否处于 Exposé 模式?

ios - 设置 UIVIew 的框架,使其不被导航栏隐藏

ios - 使用 OCMock 时捕获传递到方法中的 block

IOS Swift Kingfisher Resize 处理器结果图像模糊

iphone - iOS:检测主运行循环之外的低内存崩溃