ios - Dealloc 释放后不会立即调用

标签 ios objective-c

我有一个加载两个 View Controller 的 Root View 。例如:FirstVCSecondVC

当应用程序启动时,我将 FirstVC 显示为 Root View Controller ,在 FirstVC 上执行某些操作时,我通过删除第一个来加载 SecondVC

为了加载SecondVC,我首先删除FirstVC

[FirstVCobj.view removeFromSuperView];  
[FirstVCobj release];
FirstVCobj = nil;

之后我分配并创建SecondVC

现在只有在调用SecondVCviewdidload()之后才会调用FirstVCdealloc()方法. 这是正确的执行路径,还是因为我犯了一些错误? 以上正是我删除和创建 View Controller 的方式。

最佳答案

我假设你说的是 UIView。


  • addSubview 保留 View
  • removeFromSuperView 释放或自动释放它——一个您无法控制的实现细节

“查看”它:将它包装在您自己的池中

@autoreleasepool {
    [FirstVCobj.view removeFromSuperView];  
    [FirstVCobj release];
    FirstVCobj = nil;
}

关于ios - Dealloc 释放后不会立即调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26058459/

相关文章:

c# - 如何在 xamarin ios 中自定义选项卡位置

ios - 聚类注解覆盖非聚类注解

ios - IOS (Swift) 中的单元测试 BLE 应用程序

iphone - 如何使用Apple SimpleFtpsample项目中的Listviewcontroller类从ftp获取文件夹列表

c++ - ObjC++ 中的原子属性线程安全吗

ios - 使用 GCKMediaQueueItem 在 Chromecast 上排队多个图像

objective-c - 带有闭包的 Swift init 在 Objective C 中不可见

ios - 静态链接动态框架

ios - CoreLocation 类的 Codable 扩展

ios - 如何向 UIButton 添加观察者?