ios - 使用 Storyboard实例化的 Controller 的重新分配

标签 ios objective-c memory-management uiviewcontroller automatic-ref-counting

我正在使用 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/

相关文章:

ios - 开发时两次修改CoreData

ios - 将一个非常简单的 XML 字符串解析为 NSDictionary

java - Android 相机在 PreviewCallback 中工作时丢帧

objective-c - 在方法内设置类属性时,是否需要释放它?

ios - 防止 GMSMarkers 在 iOS 上缩放?

ios - Swift Sprite-kit 移动对象

ios - 在 UITabBarController 的顶栏上有一个 UIBarButtonItems

javascript - 如何正确卸载/销毁 VIDEO 元素

ios - 在 Swift 中链接到 iTunes 音乐

ios - heightForRowAtIndexPath 中的线程问题