我有這樣的代碼,是讓我頭疼:消息發送到釋放實例,用NSManagedObject工作時,間接
/原代碼刪除,請參閱下面/
消息當前版本我收到:
*** -[__NSDate class]: message sent to deallocated instance 0x69fa350
EDIT 3:
爲了測試它,我將所有內容都移到了一個方法中,並驗證它仍然會產生相同的錯誤。 這是一個splitView iPad應用程序。選中後,左對齊視圖控制器將傳遞一個對象voiceMemo
。右側視圖有自己的tableView,這是我加載提醒的地方。
會發生什麼,是這樣的: 最初,一切正確加載。沒有任何reminder
數據在我的數據庫中,我可以選擇任何條目,它正確加載。我可以刪除它們,修改它們等等。 我可以選擇一個包含reminder
數據的條目,並且它可以正確加載。詳細視圖中的表格視圖正確填充了數據。但是,試圖修改reminder
,程序崩潰:發送到釋放實例的消息。 不嘗試修改任何數據,如果我嘗試加載另一個帶有reminder
數據的條目,則程序崩潰。 我可以刪除不具有從(左側)主表視圖reminder
條目,但是試圖刪除一個與reminder
數據時,它崩潰(在save
方法)。下次我啓動程序時,該條目將被刪除。
數據庫和自定義類與iPhone版本共享,該版本可以正常工作。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
/* only relevant parts posted */
// Left-side label (title)
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc]
initWithKey:@"DBreminderDate" ascending:YES] autorelease];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
NSMutableArray *sortedReminders = [NSMutableArray arrayWithArray:
[voiceMemo.reminders allObjects]];
[sortedReminders sortUsingDescriptors:sortDescriptors];
self.remindersArray = sortedReminders;
AKReminder *reminder = [remindersArray objectAtIndex:indexPath.row];
cell.textLabel.text = reminder.DBreminderTitle;
if ([cell.textLabel.text length] == 0) {
cell.textLabel.text = @"Reminder";
}
// Right-side label (date)
NSDateFormatter *format = [[NSDateFormatter alloc] init];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[format setLocale:locale];
[locale release];
NSDate *reminderSetTo = reminder.DBreminderDate;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", [format
stringFromDate:reminderSetTo]]; // breaks here
return cell;
}
我的數據模型:
您是否已啓用NSZombies? – 2011-05-16 16:11:41
似乎問題出在NSDate對象上......我無法在您的代碼中看到它。也許它是在別的地方... – Macmade 2011-05-16 16:12:03
@Macmade這就是爲什麼我瘋了..這行代碼調用[NSMutableArray(NSKeyValueSorting)sortUsingDescriptors:]方法,這就是它破壞的地方。 – antalkerekes 2011-05-16 16:16:07