IOS:在storyboard中发布viewcontroller

时间:2013-01-04 11:10:30

标签: ios storyboard

我有这个代码用故事板打开一个视图控制器

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    secondViewController = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self.view addSubview:secondViewController.view];

它工作正常,但当我删除它时,我想发布secondViewController

[secondViewController.view removeFromSuperview];

并释放它???当我调用secondViewController时没有一个alloc ...

3 个答案:

答案 0 :(得分:2)

-instantiateViewControllerWithIdentifier:会返回autoreleased个对象。您不必释放它。当您从view移除superview时,它将被释放。如果您使用的是ARC,则根本不应该问这个问题......

答案 1 :(得分:0)

我假设您正在使用ARC。只需写下secondViewController = nil;即可。它应该自动发布。

答案 2 :(得分:0)

首先,区分可视化UIView实例和UIViewController实例非常重要。 instantiateViewControllerWithIdentifier调用返回一个具有UIView属性的视图控制器对象(UIViewController不需要显式释放,因为它是一个自动释放的实例) - 这个 UIView 是被添加到的内容一个超级视图,它也被它保留,只要它确实是某个视图的子视图。一旦从superview中删除了该视图并提供了使用ARC,除非你持有对它的UIViewController的强引用,否则应该发布视图,在这种情况下只需指定UIViewController属性nil值就可以处理它。如果未使用ARC,则只有在明确保留视图控制器(不是视图)时才需要调用“release”