2012-06-06 102 views
3

我已經通過儀器運行了一個程序,它報告在此代碼泄漏:爲什麼我的循環泄漏?

enter image description here

這是爲什麼?

+0

看起來像CPU利用率,而不是泄漏報告。那裏的所有對象看起來像是在非ARC中被自動釋放。你在使用ARC嗎? – gaige

+0

它似乎不是泄漏。看看這些類似的參考:http://stackoverflow.com/questions/3953519/iphone-substringtoindex-substringfromindex-substringwithrange-memory-leak http://stackoverflow.com/questions/6698046/memory-leak-with-substringwithrange-nsstring – samfisher

+0

不,我不使用ARC ... –

回答

0

正如我之前所說,我不能在這裏看到泄漏,但是一些代碼更改可能會有助於擺脫可能的泄漏,因爲您假設substringWithRange:正在產生泄漏。

以下代碼使用基於塊的枚舉。另一個積極的影響:它知道如何處理非ASCII字符。

NSMutableArray *characters = [NSMutableArray array]; 
NSString *answer = @"Hello, Wørld!"; 
[answer enumerateSubstringsInRange:NSMakeRange(0, [answer length]) 
          options:NSStringEnumerationByComposedCharacterSequences 
         usingBlock:^(NSString *substring, 
            NSRange substringRange, 
            NSRange enclosingRange, 
            BOOL *stop) 
{ 
    [characters addObject:substring]; 
} 
]; 


[characters enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    NSLog(@"%@", obj); 
}]; 
+0

好吧,謝謝你的答案,但儀器仍然顯示8泄漏NSString對象,我認爲是塊我的答案是分解成...所以...問題依然存在:( –

+0

比它必須是東西否則在你的代碼中 - 這個肯定不會泄漏 – vikingosegundo

+0

你在做什麼後面的角色? – vikingosegundo

1

這部分代碼沒有漏水。嘗試運行分析儀,它可能會告訴你什麼是泄漏。

+0

我會下注'characters'正在泄漏,而當泄漏時,顯然它是唯一負責保留的東西泄漏 - 包括這裏創建的所有字符串。 – Tommy