• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 需要有关 UIViewController 的帮助

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:32:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在多个 UIViewController 一起工作的应用程序中,

firstViewController 添加到根目录。到这里为止很好,现在我想转到 secondViewController 我不想使用 UINavigationControllerUITabBarController。我已经阅读了View Controller Programming Guide但它没有使用 UINavigationController、UITabBarController 和 Storyboard 来指定。

当用户想要从 secondViewController 移动到 firstViewController 时,secondViewController 将如何被销毁?

Apple Doc 也没有指定 UIViewController 是如何释放或销毁的?它只告诉UIViewController里面的生命周期。



Best Answer-推荐答案


如果您担心 UIViewController 是如何被释放或销毁的,那么这里有一个适合您的场景:-

这是一个 FirstViewController 中的按钮点击方法,它呈现 SecondViewController(使用 pushViewController、presentModalViewController 等)

在 FirstViewController.m 文件中

- (IBAction)btnTapped {

    SecondViewController * secondView = [[SecondViewController alloc]initWithNibName"SecondViewController" bundle:nil];
    NSLog(@"Before Present Retain Count:%d",[secondView retainCount]);
    [self presentModalViewController:secondView animated:YES];
    NSLog(@"After Present Retain Count:%d",[secondView retainCount]);
    [secondView release];  //not releasing here is memory leak(Use build and analyze)
}

现在在 SecondViewController.m 文件中

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"View Load Retain Count %d",[self retainCount]);
  }

- (void)dealloc {
    [super dealloc];
    NSLog(@"View Dealloc Retain Count %d",[self retainCount]);
 }

运行代码后:

Before Push Retain Count:1
View Load Retain Count 3
After Push Retain Count:4
View Dealloc Retain Count 1

如果你正在分配和初始化一个 ViewController,你是它生命周期的所有者,你必须在 push 或 modalPresent 之后释放它。 在上面的输出中,在 alloc init 时 SecondViewController 的保留计数为一,,,, 令人惊讶的是,但逻辑上它的保留计数即使在被释放后仍为一(请参阅 dealloc 方法),因此需要一个在 FirstViewController 中释放以完全销毁它。

关于ios - 需要有关 UIViewController 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16333731/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap