为什么以下代码不起作用?
MyViewController *viewController = [[MyViewController alloc] init];
[myWindow addSubview:viewController.view];
[viewController release];
据我了解,只要窗口需要,myWindow
就应该保留viewController.view
。那么为什么这会导致我的应用在发布时崩溃? (注释掉最后一行可以解决问题,正如预期的那样)
答案 0 :(得分:9)
[viewController release];
您正在发布viewController
而不是视图。 myWindow
将保留您传入的视图,但不保留视图控制器本身,这会导致它被取消分配。
由于视图控制器在初始化view
时保留myWindow
,然后在viewController
添加{{1}}时保留{{1}},我认为崩溃是因为后续调用了{{1}}(现在将被解除分配。)