【发布时间】:2011-07-06 23:23:35
【问题描述】:
我在这里阅读了几乎所有关于涉及 NSStrings 的内存管理的问题,但我无法真正解决这个问题。
@接口:
@property (nonatomic, retain) NSString *criticalTranscription;
@实现: viewDidLoad:
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 带有 IBAction 的 UISegmentedControl 链接到:
- (IBAction) changeText:(id)sender
{
if(transcriptionSelector.selectedSegmentIndex == 1)
[transcription setText:diplomaticTranscription];
else
[transcription setText:criticalTranscription];
}
当我更改 UISegmentControl 的值时(加载后的第一件事,没有其他运行),我遇到了这个错误 (NSZombieEnabled=YES):
2011-07-07 01:10:43.639 Transcribe[404:707] *** -[CFString length]: message sent to deallocated instance 0x1189300
我在回溯中看不到任何相关内容。没有 NSZombieEnabled criticalTranscription 只是指向随机数组或其他东西。没有进一步使用该变量或任何版本。
我运行了分析,没有任何可疑的泄漏。
有什么问题?
【问题讨论】:
-
你在哪里创建和设置
diplomaticTranscription?
标签: objective-c memory-management ios4 nsstring