0

我已經重寫我的UITableViewControllerdidSelectRowAtIndexPath方法方式如下:EXC_BAD_ACCESS在didSelectRowAtIndexPath方法

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    PhotoListViewController *photosViewController = [[PhotoListViewController alloc] initWithStyle:UITableViewStylePlain]; 

    NSLog(@"Let's see what we got %d", [[fetchedResultsController fetchedObjects] count]); 

    Person *person = [fetchedResultsController objectAtIndexPath:indexPath]; 
    photosViewController.person = person; 
    photosViewController.title = [person.name stringByAppendingString:@"'s Photos"]; 

    [self.navigationController pushViewController:photosViewController animated:YES]; 

    [photosViewController release]; 
} 

每當我嘗試訪問fetchedResultsController我得到的崩潰,我將在這裏:

我只發佈它在我的dealloc方法

+0

請發佈任何相關的崩潰信息。控制檯輸出,崩潰日誌,並確保NSZombieEnabled是在 – Joe

+0

我沒有得到崩潰的信息,它只是暫停在我的主線上int retVal = UIApplicationMain(argc,argv,nil,nil);並說EXC_BAD_ACCESS – 8vius

+0

你能告訴我如何設置NSZombieEnabled? – 8vius

回答

5

似乎你的autorelease池正在越來越耗盡喲你調用了didSelectRowAtIndexPath方法。您是否嘗試保留fetchedResultsController,如下所示:

fetchedResultsController = [[[FlickrFetcher sharedInstance] fetchedResultsControllerForEntity:@"Photo" withPredicate:predicate] retain]; 
+0

如果你檢查我發佈的第二塊代碼,我在我的initWithStyle方法中做到了這一點 – 8vius

+0

關鍵在於保留的調用,您的fetchedResultsController不能保證足夠長的時間以在您的init方法之外有用,除非您保留它。 – Joe

+0

就是這樣,謝謝 – 8vius

相關問題