2011-03-02 43 views
4

我有一個字符串變量存儲日期選擇器的日期,但是當我在其他函數中使用它的值時,我收到程序接收信號錯誤:「EXC_BAD_ACCESS」。注意:變量是全局定義的。編程接收到的信號:「EXC_BAD_ACCESS」

代碼:

- (void) changedDate: (UIDatePicker *) picker 
    { 
    if (appDelegate.dateint == 8) 
    { 
    NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateFormat:@"dd MMM, yyyy"]; 
    datestr=[dateFormatter stringFromDate:[dptpicker date]]; 
    NSLog(@"date:%@",datestr); 
    } 
    else if(appDelegate.dateint == 9) 
    { NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; 

[dateFormatter setDateFormat:@"dd MMM, yyyy"]; 
    datestr1=[dateFormatter stringFromDate:[dptpicker date]] ; 
    NSLog(@"date1:%@",datestr1); 
    } 
    } 

回答

5

您必須保留該字符串。這是最可能的原因。

編輯: 它崩潰的唯一原因是壞指針。壞指針=過度釋放對象。只要啓用殭屍程序運行你的應用程序,你會看到你在做什麼的地方。檢查這http://www.markj.net/iphone-memory-debug-nszombie/

+0

@馬克斯我已經保留該字符串。其他解決方案? – Harshal 2011-03-02 04:56:30

+0

將代碼發佈到崩潰位置。和堆棧跟蹤。 – Max 2011-03-02 04:57:14

+0

即使你保留了字符串,這並不意味着你不會過度釋放它。還要確保你沒有調用一些額外的autorelease消息。 – Max 2011-03-02 04:58:31

3

每當發生崩潰,張貼回溯。

在此之前,請使用「構建和分析」並修復它識別的任何問題。

這樣做後,如果它仍然崩潰,然後做一個殭屍檢測通過,看看你是否過度釋放的東西(這可能是,該代碼有一個明顯的過度釋放問題)。

如果仍然崩潰,那麼我們需要看到更多的代碼....

相關問題