2010-09-22 28 views
1

我初始化NSCalendar在viewDidLoad中是這樣的:NSCalendar崩潰的應用程序

gregorian = [NSCalendar currentCalendar]; 

日曆在相應的.h文件中這樣宣稱:

NSCalendar *gregorian; 

當訪問從日曆方法我的應用程序崩潰:

- (void)someMethod{ 
    unsigned int unitFlags; 
    unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit; 
    [gregorian 
    components:unitFlags 
    fromDate:[NSDate date] 
    toDate:[NSDate date] 
    options:0]; 
} 

這似乎是相關的從崩潰日誌:

異常類型:EXC_BAD_ACCESS(SIGBUS)
異常代碼:KERN_PROTECTION_FAILURE在0x0000000000000015
崩潰螺紋:0調度隊列:com.apple.main線程

特定應用信息:
objc_msgSend()選擇名稱:組件:FROM日期:TODATE:選擇:
iPhone模擬器225,iPhone OS 3.2(新iPad/7W367a)

任何想法?

感謝

回答

0

分配給它時,「陽曆」,因此它是由你訪問它的時候了你不保留您的日曆。

+0

感謝您的回答。我仍然想知道爲什麼我可以用UIView做同樣的事情,它可以工作(沒有保留)? – DeepSeaFish 2010-09-22 11:29:36

+0

如果你沒有保留一個自動釋放的對象,你打算作爲一個實例變量堅持下去,你做錯了。我們需要查看似乎正在解決該問題的代碼。然而,一般來說,內存管理錯誤可能表現出奇怪的行爲(即,它們並不總是立即崩潰或可靠地崩潰)。然而,在你發佈的代碼中,你並沒有保留日曆對象,然後試圖訪問它,這是一個錯誤。 – 2010-09-22 14:11:30

+0

DeepSeaFish:我曾經在Cocoa的Bindings中遇到過一個問題,那就是我使用autoreleasing構造函數('arrayWith ...:')來創建一個擁有我的控制器的數組,並且無法保留它。因此,這個陣列是因爲死亡 - 它沒有網絡保留。然後我裝了一個筆尖。我在綁定到暴露陣列的屬性的筆尖上有一個視圖。當視圖被取消存檔時,其綁定保留陣列並將其從死亡中拯救出來。有時你不能依靠bug的表現,但它仍然是一個錯誤。 – 2010-09-22 21:15:41