在我正在工作的應用程序中,我正在從for循環中的文本文件中讀取數值,然後執行一些計算並將結果附加到結果字符串中。如何修復長時間的NSString崩潰?
該文件中有22050個值。我注意到,超過一定數量的循環/值附加(〜5300),它往往會崩潰。
我想也許我有一個內存泄漏,所以我擺脫了字符串追加和一切工作正常。我試圖擺脫一切,但字符串追加和應用程序崩潰。我對所有異常都有一個突破點,並且我沒有得到任何異常。
我想確保所以我開始了一個新項目。所有我放在那裏有一個UIButton,當推推動這段代碼:
- (IBAction)TestPressed:(id)sender
{
NSString *testString = @"";
for (int i = 0; i < 22050; i++)
{
testString = [testString stringByAppendingString:@"12.34567890\n"];
}
NSLog(@"%@", testString);
}
我在NSLog線上有一個斷點。應用程序崩潰之前。
NSString長度是否有限制?它使用了太多的內存嗎?
這會讓你的差異使用可變字符串?'NSMutableString * testString = [NSMutableString string];''和'[testString appendString:@「12.34567890 | n」];' – Fogmeister 2013-03-18 10:37:15
您是使用iOS還是MacOS?如果您使用的是iOS, stringByAppendingString'並且你沒有使用ARC,那麼你的內存就像一個篩子,如果你使用的是ARC,那麼至少它應該釋放舊的字符串以供新的使用@Fogmeister的建議也應該改進,不管ARC。 – gaige 2013-03-18 10:39:37
@ gaige Ther在這種情況下,Mac/iOS和ARC/MRC之間沒有區別。臨時字符串只是去autorelease池。 – 2013-03-18 10:41:18