我使用instantiateViewControllerWithIdentifier
实例化一个viewcontroller。当我在ARC设置中将 nil 分配给VC变量时,我是否必须完全释放它?故事板还是会保留它?
我使用presentViewController以模态方式呈现viewcontroller,然后在vc内解除它。但是,我没有看到调用vc的dealloc
方法。
更新
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:NULL];
RViewControllerEx *viewController = (RViewControllerEx *)[sb instantiateViewControllerWithIdentifier:@"SB_RDVC"];
[self presentViewController:viewController animated:YES completion:nil];
答案 0 :(得分:0)
您还没有提供足够的信息。你在用ARC吗?您是否使用局部变量来保存指向VC或实例变量的指针?
你怎么断定模态VC的dealloc没有被调用?
如果使用强大的局部变量实例化VC,然后调用presentViewcontroller:animated:completion:,则呈现视图控制器将在显示VC时保持对VC的强引用。 (您需要使用强大的局部变量,否则新创建的VC将在您创建后立即解除分配。
一旦模态被解除,呈现视图控制器将清除它的强引用,并且应该取消分配模态。
答案 1 :(得分:0)
Dealloc没有立即被召唤。使用ARC,系统将自动清理在需要时不再使用的视图。
在您的情况下,一旦视图被解除,它将一直存在,直到系统需要空间。
根据您在dealloc中尝试/需要做的事情,有一些解决方案(如有兴趣可以发布您的需求)