我有下面的代码,它按钮按下执行。起初它按预期工作,但第二次开始应用程序挂起,我得到EXC_BAD_ACCESS信号。为什么我会得到EXC_BAD_ACCESS?
- (IBAction) comicDetailsPressed:(id)sender {
static IssueProperties *props = nil;
if (props == nil) {
props = [ComicDataParser
parseComicForUrl:@"http://dummy.com/Jan.xml"];
}
NSLog(@"%d", [props totalPages]);
totalPages.text = [NSString stringWithFormat:@"%d", [props totalPages]];
}
您对'text'属性的陈述看起来像是过度工程。虽然您应该复制可能来自任何客户端代码的字符串属性,但在这种情况下,我们只能看到由'+ stringWithFormat:'设置的属性,该属性返回一个不可变的字符串。因此,除非你知道关于Prashant的代码,否则拷贝是过度的。 – 2010-10-05 07:59:25
@格拉汉李我不明白你是如何看待它的过度工程;你必须为属性选择'assign','retain'或'copy',并且当你不使用'copy'时,你可以用'NSString'属性得到的问题是众所周知的......所以为什么不避免未来的问题,并尽可能降低风险? – 2010-10-05 19:05:52
@Shaggy Frog:YAGNI。 – 2010-10-05 20:10:36