与ARC奇怪的双重释放?

ary*_*axt 1 cocoa memory-management objective-c automatic-ref-counting

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

我正在调用alloc这个对象,它应该将保留计数设置为1,并且我还将视图添加myViewcontroller到另一个视图,这应该将保留计数设置为2.那么我如何获得双重释放?这只会在ARC上崩溃

- (void)viewDidLoad {
   [super viewDidLoad];

   MyViewcontroller *myViewcontroller = [[MyViewController alloc] init];
   [self.view addSubview:myViewcontroller.view];
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*ell 5

这里没有"双重"释放,只有一个.

您将视图控制器存储在本地变量中.ARC在此方法结束时正确释放它 - 否则会导致泄漏,因为您将不再引用它.*

我还将视图添加myViewcontroller到另一个视图,该视图应该将保留计数设置为2.

没有; addSubview:获得视图的所有权,而不是控制器.视图本身后来仍然存在,但控制器不会.


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