我正在使用 instantiateViewControllerWithIdentifier
实例化一个 View Controller 。当我在 ARC 设置中将 nil 分配给 VC 变量时,我是否必须期望它完全释放,或者 Storyboard无论如何都会保留它?
我正在使用 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];
- 我在 -dealloc 方法中有 NSLog 来确定它是否被调用
- 我正在使用局部变量,它不会立即释放
最佳答案
您没有提供足够的信息。你在使用 ARC 吗?您是使用局部变量来保存指向 VC 的指针还是实例变量?
您如何得出模态 VC 的 dealloc 未被调用的结论?
如果您使用强局部变量实例化您的 VC,然后调用 presentViewcontroller:animated:completion:,呈现 View Controller 将在显示时保持对您的 VC 的强引用。 (您需要使用强局部变量,否则新创建的 VC 将在您创建它时立即被释放。
一旦模态完成被解除,呈现 View Controller 将清除它的强引用,模态应该被释放。
关于ios - 使用 Storyboard实例化的 Controller 的重新分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23140431/