我必须从循环中的另一个字符串中删除字符串。我正在与此发生大量内存泄漏
[_withString1a setString:[_withString1a stringByReplacingOccurrencesOfString:fix1 withString:@""]];
[_withString1a setString:[_withString1a stringByReplacingOccurrencesOfString:fix2 withString:@""]];
我也试过
[_withString1a setString:[[NSRegularExpression regularExpressionWithPattern:fix1 options:NSRegularExpressionCaseInsensitive error:nil] stringByReplacingMatchesInString:_withString1a options:0 range:NSMakeRange(0, [_withString1a length]) withTemplate:@""]];
[_withString1a setString:[[NSRegularExpression regularExpressionWithPattern:fix2 options:NSRegularExpressionCaseInsensitive error:nil] stringByReplacingMatchesInString:_withString1a options:0 range:NSMakeRange(0, [_withString1a length]) withTemplate:@""]];
我有一个循环,正弦在每个迭代变量中的修复都是不同的,并且
stringByReplacingOccurrencesOfString
导致内存泄漏+ 0.5mb / iteration。 _withString1a
是0.5mb文件。 1k循环后,应用程序崩溃。有任何想法吗?
最佳答案
您可能不会出现内存泄漏,而只是循环中自动释放的字符串的累积。在替换操作周围添加一个自动释放池:
for (...) {
@autoreleasepool {
_withString1a = [_withString1a stringByReplacingOccurrencesOfString:fix1 withString:@""]];
}
}
使用
autoreleasepool
,每次迭代都会删除临时自动释放的内存。您可以在autoreleasepool中放置多个语句。
关于ios - 尝试替换NSString中的字符串的许多实例时,内存使用过多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28995917/