NSStringを使用するメモリ管理について、ほとんどすべての質問をここで読んでいますが、実際にはこの問題を解決することはできません。NSStringを使用したメモリリーク
@interface:
@property (nonatomic, retain) NSString *criticalTranscription;
@implementation: のviewDidLoad:I値を変更すると
- (IBAction) changeText:(id)sender
{
if(transcriptionSelector.selectedSegmentIndex == 1)
[transcription setText:diplomaticTranscription];
else
[transcription setText:criticalTranscription];
}
:に連結IBActionと
criticalTranscription = [[NSString alloc] init];
NSArray *paragraphs = [doc valueForKeyPath:@"critical.text"];
for(int i = 0; i < [paragraphs count]; i++)
{
criticalTranscription = [criticalTranscription stringByAppendingString:[[paragraphs objectAtIndex:i] valueForKey:@"p"]];
criticalTranscription = [criticalTranscription stringByAppendingString:@"\n\n"];
}
[transcription setText:criticalTranscription];
@XIB A UISegmentedControl UISegmentControlの(最初のものの直後ロードは、他に何も実行しない)、私は)YES =(このエラーにNSZombieEnabledを実行します。
2011-07-07 01:10:43.639 Transcribe[404:707] *** -[CFString length]: message sent to deallocated instance 0x1189300
私はバックトレースの該当するものを見ることができません。 NSZombieEnabled criticalTranscriptionがなければ、ランダムな配列やその他のものを指し示すだけです。変数やリリースはそれ以上使用されません。
私は疑わしいリークを起こさずに分析を実行しました。
問題が何ですか?あなたのループ
criticalTranscription = [criticalTranscription stringByAppendingString:[[paragraphs objectAtIndex:i] valueForKey:@"p"]];
criticalTranscription = [criticalTranscription stringByAppendingString:@"\n\n"];
のためにあなたが自動解放文字列オブジェクトにcriticalTranscription
を設定し、それを維持していない、ので、燃える死さで
'diplomaticTranscription'はどこで作成して設定しますか? – PengOne