ios - 尝试替换NSString中的字符串的许多实例时,内存使用过多

标签 ios objective-c string cocoa-touch memory-management

我必须从循环中的另一个字符串中删除字符串。我正在与此发生大量内存泄漏

[_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/

相关文章:

java - 哨兵控制循环以及如何打印多个字符串。初学者java编程

iphone - phonegap - webViewDidFinishLoad 没有被调用

ios - Objective-C : get location without delegate

ios - 在 Collection View 之上创建 View ?

ios - 导入混合框架时在 iOS 应用程序中找不到 Swift 类

ios - 如何使用 shouldPerformSegueWithIdentifier 在正确的时间显示 HUD?

iphone - UISearchBar 与 iMac Finder 搜索功能相同

C - 将非字母字符读取为字边界

java - 如何根据字符串做出决定

ios - 无法将应用程序提交到应用程序商店 xcode 5