【问题标题】:Obj-C memory management: why doesn't this work?Obj-C 内存管理:为什么这不起作用?
【发布时间】:2010-04-09 22:02:50
【问题描述】:

为什么下面的代码不起作用?

MyViewController *viewController = [[MyViewController alloc] init];
[myWindow addSubview:viewController.view];
[viewController release];

据我了解,只要窗口需要,myWindow 就应该保留viewController.view。那么为什么这会导致我的应用程序在启动时崩溃? (正如预期的那样,注释掉最后一行可以解决问题)

【问题讨论】:

    标签: iphone objective-c cocoa-touch memory-management


    【解决方案1】:
    [viewController release];
    

    您发布的是viewController,而不是视图。 myWindow 将保留您传入的视图,但不会保留视图控制器本身,这会导致它被释放。

    由于 view 在初始化时由视图控制器保留,然后在添加时由 myWindow 保留,我想崩溃是由于随后对 viewController 的调用(现在将被释放)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2010-09-27
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多