Obj-C内存管理:为什么这不起作用?

igu*_*222 0 iphone cocoa-touch memory-management objective-c

为什么以下代码不起作用?

MyViewController *viewController = [[MyViewController alloc] init];
[myWindow addSubview:viewController.view];
[viewController release];
Run Code Online (Sandbox Code Playgroud)

据我所知,只要窗口需要它就myWindow应该保留viewController.view.那么为什么这会导致我的应用在发布时崩溃?(注释掉最后一行修复问题,如预期的那样)

Ale*_*ski 9

[viewController release];
Run Code Online (Sandbox Code Playgroud)

您正在发布viewController而不是视图.myWindow将保留您传入的视图,但不保留视图控制器本身,这会导致它被取消分配.

由于view视图控制器在初始化myWindow时保留,然后在添加时保留,因此我认为崩溃是因为后续调用viewController(现在将被解除分配).