gpt4 book ai didi

ios - 将 View Controller 的 View 作为 subview 添加到另一个 View Controller 的 View 后出现 EXC_BAD_ACCESS 错误?

转载 作者:可可西里 更新时间:2023-11-01 04:30:38 25 4
gpt4 key购买 nike

在我的应用程序中,我有两个 View Controller 。第一个 Viewcontroller 是应用程序窗口的 rootViewController。当单击第一个 ViewController 中的按钮时,我将第二个 ViewController 的 View 作为 subview 添加到第一个 View 中,第二个 ViewController 的 View 中有一个按钮,我的问题是当我点击该按钮时应用程序崩溃了

-(void)theCheckoutViewisExpandedwitPatient:(id)patient
{
SecondViewController *sample=[[SecondViewController alloc]init];
CGRect rect=sample.view.frame;
rect.origin.y=30;
rect.origin.x=305;
[sample.view setFrame:rect];
[self.view addSubview:[sample view]];
}

最佳答案

问题是 SecondViewController 没有分配给强变量/属性,因此当方法返回时它被释放。

方法返回时,任何指向对象的变量(如果我没记错的话称为自动变量)都将从内存中删除。结果,该变量指向的对象将被释放。如果此对象未在其他任何地方保留,例如通过分配给强属性或强实例变量,它将被释放。现在,您正在做的是,获取第二个 View Controller 的 View 并将其粘贴到定义此方法的 View Controller View 的 View 层次结构中。该方法返回,变量从堆栈中弹出,SampleViewController 不以任何方式保留,因此它被释放。 "new" View 执行的任何导致调用其 View Controller (第二个 View Controller )的操作(例如按钮点击事件通知)都将以崩溃告终,因为该 View Controller 不再存在于内存中。

顺便说一句。你根本没有做对。如果您想编写自定义容器,请查看 View Controller Containment API。

关于ios - 将 View Controller 的 View 作为 subview 添加到另一个 View Controller 的 View 后出现 EXC_BAD_ACCESS 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16610671/

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