0

私はARCベースのプロジェクトに取り組んでいます。大きなテキスト ファイルからテキストを取得していて、そこから空白または改行文字を削除する必要があります。次のコードはシミュレーターでは正常に動作しますが、iPad ではクラッシュし、完全には実行されません (これはメモリの問題である可能性があります)。たとえば、ループを 2000 回実行する必要がある場合、iPad で 1800 回実行するとクラッシュします。

- (BOOL)formatTheText {
NSString *content = [NSString stringWithContentsOfURL:_textFileURL
                     encoding:NSUTF8StringEncoding 
                            error:NULL];

NSRange paraRange = {0,1};
NSString *modifiedContent = @"";
BOOL previousLineWasEmpty = NO;
int lineNumber = 0;

while (paraRange.location < [content length]) {

    NSRange currentParaRange = [content paragraphRangeForRange:paraRange];
    NSString *paragraph = [content substringWithRange:currentParaRange];
    NSCharacterSet *newLineSet = [NSCharacterSet newlineCharacterSet];

    NSArray *array = [paragraph componentsSeparatedByCharactersInSet:newLineSet];
    NSString *currentParagraph = @"";

    for (NSString *line in array) {
        currentParagraph = [currentParagraph stringByAppendingString:line];
    }

    // Add a space when combining two lines
    modifiedContent = [modifiedContent stringByAppendingFormat:@"%@ ",currentParagraph];
    paraRange.location += currentParaRange.length;

    if ([currentParagraph length] == 0) {

        // If previous line was empty just add a new line character
        if (previousLineWasEmpty) {
            modifiedContent = [modifiedContent stringByAppendingString:@"\n"];

        } else {
            // Add two lines for the start of a new paragraph
            modifiedContent = [modifiedContent stringByAppendingString:@"\n\n"];
        }
        previousLineWasEmpty = YES;

    } else {
        previousLineWasEmpty = NO;
    }
    lineNumber++;
}
self.cleanedString = modifiedContent;
return YES;
}
4

0 に答える 0