gpt4 book ai didi

ios - performSegueWithIdentifier destinationViewController 使用 ARC 解除分配

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:24 25 4
gpt4 key购买 nike

奇怪的问题:

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

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

这个转换,我看到了新的 View Controller ,在 initWithCoder 和 AwakeFromNib 之后,它设置了 UI,我看到数据源和委托(delegate)的属性已经设置。然后突然 dealloc 被解雇了!并且这个目标 View Controller 被释放了。然后当然所有东西都铺了。代表为零,数据源为零,因为包含的 View Controller 对包含它的 subview 无效...

我不知道为什么会这样,源 View Controller 是否没有保留对目标 View Controller 的强控制?

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

感谢任何帮助

最佳答案

解决方法:

确保您的源 VC 保留对目标 VC 的强引用,并在 prepareForSegue 中进行设置。否则,您将在运行 initWithCoder 和 AwakeFromNib 后看到目标 VC dealloc 本身。

@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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com