我有下面的代碼,它按鈕按下執行。起初它按預期工作,但第二次開始應用程序掛起,我得到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