2011-08-17 174 views
1

下面的代碼有什麼問題嗎?它有時會讓我的應用崩潰。iOS appendFomat導致應用程序崩潰

- (NSString*) getDisplayString 
{ 
    NSMutableString* display = [[NSMutableString alloc] initWithString:@""]; 

for(NSUInteger i = 0; i < [entries count]; i++) 
{ 
    Entry* e = [entries objectAtIndex:i]; 
    [display appendFormat:@"%d. %@ %30d\n", i+1, e.title, e.value]; 

} 

    return display; 
} 
+1

發佈崩潰詳細信息和(不相關)您需要autorelease顯示。 – Joe

+0

我很確定你需要用%d替換%30d。 –

+0

@Andreas Carlbom%30d沒有任何問題。它只是指定格式的長度爲30。 – Joe

回答

0

找到了我的問題的答案。問題是內存管理,我沒有增加在Entry對象中找到的NSString標題的保留數。 title是通過文本字段從用戶輸入中獲得的值,所以當UIView釋放內部完成的字符串時,它不再存儲在內存中,因此它使得錯誤看起來是隨機的。

所以總結一下,無論你使用的是文本字段的值,你都需要增加它的保留數。

NSMutableArray* myArray = [[NSMutableArray alloc] init]; 
NSString* someStringToStore = uiTextField.text; 
[someStringToStore retain]; 
[myArray addObject: someStringToStore];