Ios5 为什么第二个替换段总是导致详图视图控制器崩溃?

Ios5 为什么第二个替换段总是导致详图视图控制器崩溃?,ios5,replace,crash,uisplitviewcontroller,segue,Ios5,Replace,Crash,Uisplitviewcontroller,Segue,我将splitViewController用于iPad程序。在主视图(tableviewController)中,将显示照片名称列表。单击其中一个照片名称时,照片将显示在详细视图中 现在的问题是,当你第一次点击一张照片时,照片会正确显示;但是,当您第二次在表中选择照片时,程序将崩溃 我的代码 在故事板中,我构建了一个从主视图控制器到detailView控制器的替换序列。在主视图控制器的tableView:didSelectRowAtIndexPath:中,我写入: [self-Performsg

我将splitViewController用于iPad程序。在主视图(tableviewController)中,将显示照片名称列表。单击其中一个照片名称时,照片将显示在详细视图中

现在的问题是,当你第一次点击一张照片时,照片会正确显示;但是,当您第二次在表中选择照片时,程序将崩溃

我的代码

在故事板中,我构建了一个从主视图控制器到detailView控制器的替换序列。在主视图控制器的tableView:didSelectRowAtIndexPath:中,我写入: [self-PerformsgueWithIdentifier:@“照片秀”发件人:self]

在prepareForSegue:发件人:,我写道: [segue.destinationViewController setCurrentPhotoInfo:self.currentPhoto]

在detailViewController中,我在setCurrentPhotoInfo中编写代码,如下所示:

碰撞信息

当程序崩溃时,我在[self-PerformsgueWithIdentifier:@“Photo Show”发送者:self]中得到了崩溃;事故信息为: [PhotoShowViewController respondsToSelector:]:消息发送到解除分配的实例0x6c9eae0。

为了调试该问题,我在PrepareForegue中编写代码以观察目标视图控制器地址:

id last = [self.splitViewController.viewControllers lastObject];
id destination = segue.destinationViewController;
令我惊讶的是,最后一个目的地不同!我想他们应该是一样的。 更令人惊讶的是,当您完成第一个阶段并单击照片表进入第二个阶段时,您会发现最后一个和目的地都已更改:目的地更改为新地址,最后一个与旧目的地相同

崩溃地址“0x6c9eae0”只是上一个旧地址

为什么会这样?我很困惑

id last = [self.splitViewController.viewControllers lastObject];
id destination = segue.destinationViewController;