ios - PerformSegueWithIdentifier destinationViewController 使用 ARC 解除分配

标签 ios objective-c segue

这里有奇怪的问题:

我创建了一个带有两个 View Controller 的 Storyboard,与自定义segue(交叉溶解)连接。我通过以下方式实现转场:

-(void)transitionToIntro
{ 
    [self performSegueWithIdentifier:@"ToIntro" sender:self];
}

此转换后,我看到了新的 View Controller ,在 initWithCoder 和 AwakeFromNib 之后,它设置了 UI,并且我看到数据源和委托(delegate)的属性已设置。然后突然解除分配被解雇!并且这个目标 View Controller 被释放。那么当然一切都是废话。委托(delegate)为零,数据源为零,因为包含的 View Controller 对于包含它的 subview 无效......

我不知道为什么会发生这种情况,源 View Controller 是否没有对目标 View Controller 保持强有力的控制?

我已确保将 Storyboard中设置的初始 View Controller 设置为我的源 View Controller 。

感谢任何帮助

最佳答案

解决方案:

确保源 VC 保留对目标 VC 的强引用,并在prepareForSegue 中进行设置。如果没有,您将在运行 initWithCoder 和 AwakeFromNib 后看到目标 VC 释放本身。

@property (nonatomic, strong) IntroViewController *destVC; 




 -(void)transitionToIntro
{

    [self performSegueWithIdentifier:@"ToIntro" sender:self];
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    if ([segue.identifier isEqualToString:@"ToIntro"])
    {
        IntroViewController *dest = [segue destinationViewController];
       self.destVC = dest;
    }
}

关于ios - PerformSegueWithIdentifier destinationViewController 使用 ARC 解除分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079894/

相关文章:

ios - iPhone SDK 发布 NSString

iphone - 与应用程序相关的设备的声音控制

ios - 有没有可用的ios框架集成工具?

ios - 如何在不使用 Storyboard segues 的情况下添加动画链式过渡系统?

ios - UIButton 在 UITableViewCell 中不可点击

ios - 如何在ios图表中向Y轴值/标签添加%?

objective-c - 同一 NSManagedObject 之间的多种关系

ios - MKAnnotationView 的 subview 上的 UITapGestureRecognizer 不起作用

ios - 程序化转场后自动触发的 Action

ios - Storyboard将数据从第三个 VC 向后传递给第一个 VC