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

相关问题