在我的应用程序中的 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/