显示详细信息转场时未调用 Deinit

2023-12-21

我在一个较大的 Swift 项目中遇到了这个问题,但能够在一个非常基本的项目中复制它。我有以下视图控制器类:

class ViewController: UIViewController {
    deinit {
        println("Deinitializing")
    }
    
    override func viewDidAppear(animated: Bool) {
        NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: "segue", userInfo: nil, repeats: false)
    }

    func segue() {
        self.performSegueWithIdentifier("segue", sender: self)
    }
}

我的故事板已配置,因此有两个视图控制器,都使用上面的类并带有Show Detailsegues 互相指向。我可以确认它们来回“弹跳”。尽管每次都会显示一个新实例,并且没有保留周期,但先前显示的视图控制器的deinit方法未被调用。

我已经能够通过使用自定义转场来获得我想要的行为,但我的问题是:这种行为是预期的吗?

该文档似乎表明它应该按照我的预期工作,我已经突出显示了我认为适用于我的测试项目的部分。

Source https://developer.apple.com/library/ios/recipes/xcode_help-IB_storyboard/chapters/StoryboardSegue.html

在详细信息区域中显示内容。如果应用程序显示主视图和详细信息视图,则新内容将替换当前详细信息。 如果应用程序仅显示主视图或细节视图,则内容将替换当前视图控制器堆栈的顶部。

我本以为替换当前视图控制器堆栈的顶部会导致当前视图控制器被取消初始化。

显示详细信息的替代方法

作为参考,我能够通过这个 segue 实现我想要的行为(这没有做任何花哨的事情,并且可能是不正确的):

class ExampleSegue: UIStoryboardSegue {
    override func perform() {
        let source = self.sourceViewController as UIViewController
        let destination = self.destinationViewController as UIViewController
        
        source.view.window?.rootViewController = destination
    }
}

感谢您的帮助!


如果您不使用导航控制器或拆分视图控制器,则“显示详细信息”segue 与模式演示相同。呈现另一个控制器的控制器在其presentedViewController属性中保留对其的引用(并且呈现的控制器在其presentingViewController属性中具有对演示者的引用)。因此,任何控制器都不会被释放。如果您想返回到上一个控制器,您应该使用展开转场或在代码中使用dismissViewControllerAnimated:completion。

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

显示详细信息转场时未调用 Deinit 的相关文章

  • 在 Swift 3 中单击和双击 UITableViewCell

    我在 TableView Cell 上有故事板 segue 我用它来在单元格单击中传输到另一个 VCdidSelectRowAt方法 现在我双击了TapGestureRecognizer处理手机上的点击问题 问题是 单击时 segue 正在
  • 为什么我们在 @synchronized 块中传递 self ?

    我猜 synchronized 块不依赖于对象 而是依赖于线程 对吗 既然如此 我们为什么要传递 self 呢 synchronized是语言提供的用于创建同步作用域的构造 因为使用简单的全局共享互斥锁效率非常低 因此序列化每个单独的互斥锁
  • 如何在 Swift 中使用 substringToIndex? [复制]

    这个问题在这里已经有答案了 我在这一行收到编译器错误 UIDevice currentDevice identifierForVendor UUIDString substringToIndex 8 类型 String Index 不符合协
  • 如何在 Swift 中使用 CGFloat?

    var posinonY Float Float y Float pipeDown size height Float verticalPipeGap pipeDown position CGPointMake 0 0 Float posi
  • 在界面生成器/故事板中设置 UIButton 图像

    我有一个视图控制器 我在故事板中添加了一个圆形矩形按钮 该应用程序运行良好 我还使用故事板将按钮连接到 segue 我正在尝试为此按钮设置一个自定义图像以用于其开和关状态 我如何访问此按钮并设置其属性 在本例中为开和关图像 这是一个屏幕截图
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • iOS 解决方案仅当图像尚未使用 SDWebImage 缓存在内存中时才加载带有动画的图像

    我已经为这个问题苦苦挣扎了几天 以前我使用 AFNetworking 类别来加载和缓存图像 但它的回调中没有提供缓存类型 所以我过去常常在每个控制器中跟踪哪些图像已经加载 我浏览了 SDWebImage 它提供了我正在寻找的东西 SDIma
  • 使用隐藏的 SFSafariViewController 获取 Safari cookie

    我正在阅读以下关于从移动网页到本机 iOS 9 应用程序对用户进行身份验证的文章 并且想知道如何最好地实现类似于下面讨论的隐藏控制器的隐藏 safari 视图控制器 https library launchkit io how ios 9
  • UIBezierPath 的起始和结束角度?

    我在 iOS 中使用如下代码编写了半圆UI贝塞尔路径 and CAShape层 clockWiseLayer CAShapeLayer alloc init CGFloat startAngle M PI 2 CGFloat endAngl
  • 如何从 NSString 中删除十六进制字符

    我面临一个与字符串中的某些十六进制值相关的问题 我需要从字符串中删除十六进制字符 The problem is when i print object it prints as BLANK line And in debug mode it
  • iOS 中的等宽字体是什么?

    我想要在我的 iOS 应用程序中为 UILabel 使用等宽字体 不幸的是 我找不到一个 甚至 美国打字机 实际上也不是等宽的 XCode 中可用的等宽字体是什么 iOS 等宽字体 Courier Courier Bold Courier
  • 从 RemoteIO 保存音频的示例?

    我进行了搜索 但没有找到任何从 RemoteIO 音频单元保存音频的好示例或教程 我的设置 使用 MusicPlayer API 我有几个 AUSamplers gt MixerUnit gt RemoteIO 音频播放效果很好 我想添加将
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • UIImage:如何获取网站选项卡图标

    我正在开发一个 RSS 阅读器 我需要获取每个提要的图标 例如 如果我的提要是 google com 我想获取 G 图标并将其放入 UIImage 或其他内容中 关于如何实现这一目标有什么想法吗 最简单的方法是使用 Google NSStr
  • Cognito/IAM 策略和 S3 获取对象

    我正在尝试将 S3 和 Cognito 集成到我的 iOS 应用程序中 但到目前为止尚未成功 我相信该错误与我针对 Auth 和 Unauth 用户的 IAM 策略有关 所以这是我的政策 Version 2012 10 17 Stateme
  • 如何在 EKRecurrenceRule 中设置一周中某一天的数组?

    我想在用户选择的特定日期每周添加事件 可以是一个或多个 也可以是一整天 我将用户选择的日期值存储在模型类变量中 但是 当我添加事件并选择日期时 假设今天是星期一 我选择星期二和星期三并保存 然后我查看周一和周三添加的 iPhone 日历 我
  • 播放(非库)Apple Music 内容 - 请求失败

    我正在尝试使用以下代码播放专辑 let predicate MPMediaPropertyPredicate value 1459938538 forProperty MPMediaItemPropertyAlbumPersistentID
  • iOS 发送 iMessage 尽可能简单

    我希望能够以编程方式发送 iMessage 除了调用一个将文本发送到带有消息的号码的函数之外 无需执行任何其他操作 这两个消息都是文本框 我真的很感激一些示例代码 因为我在网上搜索过 但我发现没有任何帮助 这不适用于商业应用程序 仅适用于我
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi

随机推荐

  • #include <图形.h>

    我如何使用 include
  • 每次选择框更改时使用ajax发送http请求

    您好 我正在使用 jquery 从 mysql 获取数据 它工作得很好 但我需要它在另一个选择框更改时更新选择框 这是我对 jquery 的了解 airports live change function var selectVal air
  • 使用 jQuery 的 Twitter feed

    我正在尝试使用 jQuery 解析 twitter 提供的 JSON 文件来制作一个显示 5 条推文的 twitter feed 我做了jsFiddle在这里 http jsfiddle net MichaelvandeWeerd 3Ubc
  • 使用 PCA 时出现数学域错误

    我正在使用 python 的 scikit learn 包来实现 PCA 我正在学习数学 domain error C Users Akshenndra Anaconda2 lib site packages sklearn decompo
  • 如何在 Bash 脚本中静默输出?

    我有一个输出到标准输出的程序 并且希望在通过管道传输到文件时使 Bash 脚本中的输出静音 例如 运行程序将输出 myprogram WELCOME TO MY PROGRAM Done 我希望以下脚本不向终端输出任何内容 bin bash
  • 在对话框中为列表视图设置适配器时出现 NullpointerException

    我想显示一个自定义对话框 其中有一个列表视图 首先看一下我下面的代码 Dialog protected void onPostExecute String file url btnInvite setOnClickListener new
  • 在 Unity 中运行时将带有文本的按钮动态添加到 UI [重复]

    这个问题在这里已经有答案了 我正在与C an Unity 5 6 1f1 我做了一个机制 在 UI 按钮上单击应该向 UI 上已有的面板添加一个带有文本的附加按钮 并且它确实有效 因为我能够看到对象出现在那里 public void Mak
  • 将 Outlook 电子邮件作为 .msg 文件保存到我的内部驱动器

    我正在尝试将 Outlook 电子邮件保存到我的 H Drive 中 我希望它作为运行脚本规则 但我无法让它工作 不涉及任何附件 我需要的只是将其保存为 msg 文件 如果您找到解决此问题的不同方法 请 lmk Thanks Sub Ext
  • Laravel 5:AppServiceProvider 与自定义提供程序

    几天前 我开始学习 Laravel 我无法理解一种机制 有 AppServiceProvider 我可以在其中注册 绑定 我的自定义类 接口等 但是在许多教程中 当作者创建自定义类来注册它们时 它们也会创建自定义服务提供程序类 而不是在 A
  • 如何将 HttpServletRequest 转换为字符串?

    我怎样才能转换HttpServletRequest to String 我需要解组HttpServletRequest但是当我尝试这样做时 我的程序会抛出异常 javax xml bind UnmarshalException with l
  • ViewPager + GridView onItemClick

    我在 ViewPager 的布局中有一个 GridView 我不确定这是否有影响 inside SampleAdapter for ViewPager Override public Object instantiateItem ViewG
  • (Ruby,Rails) CRUD 嵌套模型在单个页面上深度超过 4 层...?

    尽管有很多令人惊奇的信息 但它似乎常常达不到我疯狂的要求 也就是说 我正在寻找一种机制来处理单个页面上的多个嵌套模型 现在 我已经看过所有关于嵌套两个模型 Railscasts 等 的视频和帖子 不是真的 而是幽默一下 然而 我需要处理嵌套
  • 从中心点缩放向量?

    我试图弄清楚我是否有可以构成正方形的点 假设我知道这个广场的中心 我想要一个公式 可以使其大小例如两倍 但从中心开始 因此 新形状的大小是多边形中心的两倍 它必须适用于任何形状 而不仅仅是正方形 我更多地寻找其背后的理论而不是实现 如果你知
  • 正在向本地邮件服务器发送邮件 - “SENT: 550 地址无效。”

    我正在尝试将邮件发送到我的本地邮件服务器 我在用hMail服务器作为邮件服务器 我已将其配置为此处提到的 在 XAMPP 上设置本地邮件 SMTP POP3 IMAP 服务器 http thephpcode blogspot com 200
  • 将示例用法(markdown?)添加到 JavaDocs

    假设我有这个 有没有办法向每个方法添加 markdown 或 html 并提供如何使用该方法的示例 我正在考虑一个扩展面板 按钮显示 查看示例 它会打开一个面板 我尝试将其添加到内联文档中 pre code new BeanTranslat
  • 使用 RSS feed XML 并显示信息

    我必须在 Windows Phone 7 应用程序中使用 feed XML RSS 并将这些信息显示在ListBox 我尝试按照以下方式读取 XML feed 中的内容 private void button1 Click object s
  • 为什么 gcc 不编译未初始化的全局 const?

    当我尝试使用 g 编译以下内容时 const int zero int main return 0 我收到一个关于uninitialized const zero 我认为全局变量默认初始化为 0 1 为什么这里的情况不是这样呢 VS 编译得
  • JDK8 中使用的 Rhino javascript JSR-223-wrapper 在哪里?

    我的目的是在 AdaptOpenJDK 8 VM 中提供 JSR 223 javascript 引擎 所以我想到使用已经熟悉的Rhino OpenJDK wiki 文档在这里 https wiki openjdk java net disp
  • 查找目录和子目录中的所有零字节文件

    如何查找目录及其子目录中的所有零字节文件 我已经这样做了 bin bash lns vdir R dir awk print 8 t 5 temp for file in lns do if test file 0 then printf
  • 显示详细信息转场时未调用 Deinit

    我在一个较大的 Swift 项目中遇到了这个问题 但能够在一个非常基本的项目中复制它 我有以下视图控制器类 class ViewController UIViewController deinit println Deinitializin