2

数百 (場合によっては数千) のサードパーティ ファイルを編集している Cocoa プログラムがあり、エンド ユーザーが確認できるようにログ タイプの出力を作成したいと考えています (ただし、タイムスタンプなどは必要ありません)。現在、アウトレットに文字列を追加するだけです:

@property (unsafe_unretained) IBOutlet NSTextView *finalText;
...
self.finalText.string = [self.finalText.string stringByAppendingFormat:@"Final results:\n"];

しかし、これは非常に非効率的です。上記のコード (すべてのコメント) をオフにして 700 個のファイルに対してそのコードを実行すると、実行に 4 秒かかり、上記のコードをオンにすると、必要な 8,000 行の出力を作成するのに 40 秒かかります。ああ、それと、処理中にメモリ使用量が 2GB を超えたと Xcode が言っていることは言いましたか? うわぁ!

私がやっていることは非効率的であることは理解していますが、効率化する最善の方法はわかりません。エンドユーザーが最後に見ることができる 8,000 行のテキストを作成する最善の方法は何ですか? 木こりのようなものが最善の解決策でしょうか?

4

3 に答える 3

0

[self.textView.textStorage appendAttributedString: ... ]

それははるかに少ない仕事をします。また、それを @autoreleasepool でラップして、一時オブジェクトをすぐにクリーンアップします。

于 2013-07-01T01:10:59.370 に答える