故事板继续导致内存泄漏

2024-03-31

I have two UIViewControllers with buttons triggering segue (modal) to each other. I wanted to discover if that's causing any memory leaks while jumping back and forth and I see that Living Object && allocated memory is going up, what eventually would leave to app crash. I don't have any single line of code - working with pure UIViewControllers. storyboard

我可能做错了什么?
我是否在项目设置中设置了错误?
我读分析器的统计数据是否很糟糕?
使用 segue 时是否需要执行任何特殊的发布命令?


您没有正确使用模式转场。按照您实现它的方式,当您进行segue时,您将创建每个视图控制器的新实例,而不是返回到您来自的实例。这就是您的内存使用量持续增加的原因。

在 iOS 6 之前,处理这个问题的正确方法是:

1)定义一个方法,例如viewController2Done在视图控制器 1 中
2)在视图控制器2中,创建一个名为的属性delegate类型的id.
3) in prepareToSegue对于视图控制器 1,设置delegate在视图控制器 2 中self
4)在视图控制器2中,当需要返回视图控制器1时,调用[delegate viewController2Done]
5) in viewController2Done call [self dismissModalViewControllerAnimated:YES]

这个方法在iOS 6中仍然有效,但是还有一个新的unwind segue可以用它来代替。要使用它,您可以在视图控制器 1 中定义一个方法,如下所示:

Objective-C:

- (IBAction)unwindFromViewController2:(UIStoryboardSegue *)segue
{
    NSLog(@"and we are back");
}

Swift:

@IBAction func unwindFromViewController2(_ segue: UIStoryboardSegue) {
    print("and we are back")
}

然后,您可以控制从视图控制器 2 中的按钮拖动到故事板中视图控制器上方栏中的橙色退出图标。在弹出窗口中,您可以选择unwindFromViewController2瞧,你就完成了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

故事板继续导致内存泄漏 的相关文章

随机推荐

  • JavaFX:如何在不关注主窗口的情况下关闭子窗口

    我试图在一定时间后以编程方式关闭子窗口 这个子窗口的initOwner是与主舞台一起设置的 但是关闭这个子窗口后 主窗口就会获得焦点 有什么方法可以在不关注主窗口的情况下关闭子窗口 以编程方式 下面是我的问题的快速演示 我尝试了所有可能的方
  • OSX 上“没有名为 _scproxy 的模块”

    我使用的是预装 python 2 6 的 OSX 10 6 并且想通过 easy install 或 setup py 在下载的包中 安装 python 包 就我而言 我正在尝试安装 MySQLdb 在这两种情况下 我都会得到一个堆栈跟踪
  • 在处理其他事情时如何将一堆未提交的更改放在一边

    如果我有一堆未提交的更改 并且想在处理其他事情时将其放在一边 然后稍后 例如几天后 返回并继续工作 完成此任务最简单的工作流程是什么 到目前为止我只体验过 Mercurial 的基本功能 我通常的方法是使用克隆创建一个新分支 但可能有更好的
  • 自动布局问题 Xcode 8 [_SwiftValue nsli_superitem]

    将我的代码转换为 Swift 3 我发现了一个奇怪的问题 现在 2016 年 9 月 15 日 Xcode 8 公共版本 已经发布 转换代码后 我的应用程序崩溃了 没有明显的原因 自动布局有问题 日志显示如下 SwiftValue nsli
  • Android,在库项目中提供应用程序特定常量的最佳方式?

    我正在为许多 Android 应用程序创建一个库项目 这些应用程序都具有一些我希望包含在库项目中的通用功能 但库项目功能需要使用特定于应用程序的常量 所以我正在寻找一种方法来为库函数提供常量名称并允许每个应用程序定义它们 特定应用程序常量的
  • data.table 中的 Between 与 inrange

    In R s data table 什么时候应该选择 between and inrange 用于子集化操作 我已阅读帮助页面 between我仍然对这些差异感到摸不着头脑 library data table X data table a
  • 屏幕阅读器何时应该可以使用“隐藏”元素(为了可访问性,a11y)?

    我听到建议 hidden类不作为 hidden display none 但将其宽度和高度设置为 1 并使用剪切等 使元素看起来仍然存在于屏幕上 但内容不可见 但是 当我们使用 JavaScript 隐藏某些内容时 该元素的目的就已经完成
  • 查找 JUnit TestCase 中测试方法的数量

    有没有办法知道测试用例中测试方法的数量 我想做的是有一个测试用例来测试几种场景 对于所有这些我只会执行一次 data setUp 同样 我想在所有测试方法结束时进行一次清理 tearDown 我当前使用的方法是维护一个计数器来记录文件中存在
  • Angular 2 - 如何在组件中包含 javascript?

    我对 Angular 完全陌生 直接开始使用 Angular 2 Angular 的一大优点是我可以模块化网页的每个功能 组件有自己的 html 和样式表 但是他们自己的 javascript 文件呢 我怎样才能包含它自己的特定 javas
  • 使用 powershell 获取家庭网络上的设备名称及其 IP 地址

    这个问题是由于尝试管理我的家庭 WiFi 网络而产生的 我一直在尝试 get netipaddress ipconfig 和 nslookup exe 等命令 以下命令有点引导我到某个地方 但它没有我正在寻找的信息 Get NetIPAdd
  • Zend_Form_Element_MultiCheckbox:如何将一长串复选框显示为列?

    所以我正在使用Zend Form Element MultiCheckbox显示一长串复选框 如果我简单地echo元素 我得到很多由分隔的复选框 br 标签 我想找出一种方法来利用简单性Zend Form Element MultiChec
  • 允许 Django Rest Framework 序列化器字段名称中使用连字符

    鉴于我正在编写代码的 OpenAPI 规范需要在请求正文中使用连字符大小写 又名短横线大小写 变量名称 那么在使用 Django Rest Framework 时应如何处理 例如 一个请求POST thing创建一个具有以下主体的事物 ow
  • node.js - 将数据推送到客户端 - 只能连接一个客户端?

    我正在尝试创建一个服务器端解决方案 通过 node js 定期将数据推送到客户端 无客户端轮询 连接应该永久打开 每当服务器有新数据时 它就会将其推送到客户端 这是我的简单示例脚本 var sys require sys http requ
  • 为什么测试时一定要用DataParallel?

    在GPU上训练 num gpus设置为1 device ids list range num gpus model NestedUNet opt num channel 2 to device model nn DataParallel m
  • 是否可以访问用户订阅的 Firebase 主题?

    我目前正在尝试将我的应用程序迁移到 firebase 并且我正在寻找与 Parse Installations and Channels 等效的 Firebase 我发现我们应该在我的应用程序中使用主题 订阅 和 取消订阅 主题很常见 但
  • 是否可以处理 HTML 输入字段中的向上/向下键?

    我正在为输入文本字段构建自动完成功能 目前我可以使用鼠标单击来选择选项 我想添加键盘控制以允许自动完成控制 我监控了onkeyup事件中的键码 出现向上 向下键 键码都是0 我想知道是否有更好的方法可以做到这一点 Thanks 键码 37
  • android marshmallow中“身份”的应用程序权限在哪里

    我正在尝试使用 Android Studio 附带的模拟器来查看用户可以从此设备启用 禁用哪些权限 虽然开发人员可以声明他需要访问 身份 或联系人卡 但似乎在模拟器中 没有选项可以显示已禁用 身份 访问的应用程序 这是否意味着用户无法拒绝访
  • windows下无法使用mingw/gdb在eclipse helios cdt上调试小程序,控制台冻结

    我一直在尝试使用 Eclipse CDT 来做一些 C 示例 我可以使用 run 命令很好地运行它们 但是每当我尝试调试时 控制台窗口就会冻结 我可以输入 但程序不运行不继续了 当我调试时 我在控制台窗口上得到以下输出 没有断点 但由于默认
  • 如何获取没有0x00或0xFF字节的x86_64中的指令指针?

    有没有一种方法可以在不使用指令指针 RIP 的情况下访问指令指针 RIP 中的值call随后是一个pop用汇编语言 或者是否有机器代码操作码可以做到这一点 我一直在谷歌搜索没有明确的结果 我的问题是机器代码中不能有任何零 否则我会收到 SI
  • 故事板继续导致内存泄漏

    I have two UIViewControllers with buttons triggering segue modal to each other I wanted to discover if that s causing an