-1

我今天想知道一件事。

假设我MyViewController *myViewController在根UIViewController接口中声明了一个属性并实现它(综合、释放、卸载等)

然后我有一个功能loadMyView()

- (void)loadMyView {
    if (!self.myViewController)
        self.myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
    [self.view addSubview:self.myViewController.view];
}

和:

- (void)hideMyView {
    [self.myViewController.view removeFromSuperview];
}

这些功能可以多次使用。

问题是,一旦我隐藏了视图,我就不再需要它以及它的内容和它们的当前状态。那么从内存中删除它允许我稍后再次分配(从而省略方法中的if语句loadMyView)的正确方法是什么?为什么?

由于其他原因,我需要一个指向该对象的强指针,这就是为什么我不创建临时对象然后释放它的原因。

hideMyView做我:

  1. self.myViewController = nil;
  2. [self.myViewController release];

或者 3. 初始化时自动释放内存:(self.myViewController = [[[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]autorelease];但是什么时候释放呢?)

对此还是比较陌生的。

4

1 回答 1

3

您的问题令人困惑的是 loadview 是 UIViewController 类中的方法之一。重写第一个视图控制器的 loadview 方法以初始化第二个视图控制器并将第二个视图控制器的视图属性添加到第一个视图控制器的视图属性是没有意义的。我认为您的问题没有为任何人提供足够的背景来给您一个明智的答案。

于 2012-04-20T02:13:47.217 回答