gpt4 book ai didi

objective-c - 与 ARC 的奇怪双重发布?

转载 作者:行者123 更新时间:2023-12-03 16:52:48 25 4
gpt4 key购买 nike

我有一个 View Controller 的子类。将此 View Controller 的 View 添加到另一个 View 后,与 MyViewController 的 View 的任何交互都会导致崩溃。当运行僵尸时,它显示双重释放,myViewController 的保留计数已变为-1。

我正在这个对象上调用alloc,这应该使保留计数为1,并且我还将myViewcontroller的 View 添加到另一个 View ,这应该带来保留计数为 2。那么我如何获得双重释放呢? 这只会在 ARC 上崩溃

- (void)viewDidLoad {
[super viewDidLoad];

MyViewcontroller *myViewcontroller = [[MyViewController alloc] init];
[self.view addSubview:myViewcontroller.view];
}

最佳答案

这里没有“双重”版本,只有一个。

您将 View Controller 存储在此处的局部变量中。当该方法结束时,ARC 会正确地释放它——否则会导致泄漏,因为您将不再有对它的引用。*

I am also adding the view of myViewcontroller to another view, which should bring the retain count to 2.

没有; addSubview: 取得 View 的所有权,而不是 Controller 。 View 本身稍后仍然存在,但 Controller 不会。

<小时/>

*所以,有趣的是,这在 MRR 下不会崩溃,但会是不正确的。

关于objective-c - 与 ARC 的奇怪双重发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11251802/

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