问题标签 [deinit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6154 浏览

swift - 从内存中删除 UIView 时,快速 deinit 方法不起作用

SwiftARC 中,deinit当 anyUIViewController从 memory 中删除时调用,但如果 any 从 memory 中删除,则不会被调用UIView

例如

如果UIViewControllerdeinit工作得很好

但万一UIView上课deinit不工作

任何的想法 。

0 投票
1 回答
248 浏览

swift - AVPlayerViewController 在展开后不会释放

在我的 tvOS 应用程序中,我有一个 AVPlayerViewController,通过 show segue 呈现,如果没有找到视频,它会显示警报并展开到上一个视图。我创建了一个警报控制器,将其呈现出来,然后在警报操作处理程序上调用 unwind segue。一切似乎都按预期工作,但我发现展开的视图控制器没有被释放。

我发现如果我不调用 unwind 并手动按下菜单按钮返回,它会很好地解除分配,所以关于 unwind segue 的某些内容不允许玩家被解除分配。我也尝试过用 unwind segue 替换dismissViewControllerAnimated它,它似乎解雇了玩家,但仍然没有 dealloc。

0 投票
1 回答
395 浏览

ios - 如何声明弱通知

也许标题没有提供很好的描述,所以请阅读以下内容。

我有一个设置为监听事件的通知:

然后我想删除这个通知的观察者。我发现我需要像这样使用 deinit:

但问题是当我关闭视图控制器时,程序从不执行 deinit 函数。在这个答案中,我发现这可能是由于强参考。

我检查了许多链接,但找不到如何为通知声明弱引用。那么如何声明一个弱通知呢?

希望我的问题很清楚。

期待您的帮助。

0 投票
1 回答
110 浏览

ios - 当视图控制器被取消初始化时进行网络调用是否安全?

基本上,我有一个控制聊天室的 UIViewController。当 UIViewController 以任何方式被取消时,当前用户需要离开频道。

目前,我的代码是:

我只见过像NSNotificationCenter.defaultCenter().removeObserver(self)deinit 这样的代码,我还没有在网上找到任何关于这样做是否安全的信息。

从本质上讲,这个视图控制器是 UINavigationController 堆栈的一部分,每当视图控制器被弹出(我想 deinit 总是会在此期间被调用)时,我希望用户离开频道。如果有一种首选的方法来处理导航栏上的左上角后退按钮和平移手势,那么我很乐意看到实现。

0 投票
1 回答
1199 浏览

ios - UINavigationController deinit 从未调用过

从我的一些ViewController堆栈中,UINavigationController我提出了另一个ViewController并且永远不会回来,但问题是deinit{}没有调用。在导航之前我应该​​如何ViewController从堆栈中删除每个?还是我应该使用其他方法?现在我的代码看起来像

0 投票
1 回答
5689 浏览

ios - 是否可以在 Swift 中覆盖 deinit?

从另一个类创建子类时,函数需要它overrideinit()但不能覆盖deinit“函数”。

这在 Swift 中可能吗?

这是一个例子

内部示例视图控制器

输出

添加到我关于扩展的原始问题deinit

在示例代码中,似乎覆盖init()会导致调用init()超类的函数。这是正在发生的事情吗?

Bar实例被取消初始化时,也会发生同样的行为。这也是这里发生的事情吗?

0 投票
2 回答
1126 浏览

ios - 是否可以使用 swift 来调配 deinit。如果是,那么如何实现这一目标

我想在我的项目中 UIViewController 的每个子类中的 deinit 中记录一些语句。我不想在每个视图控制器子类中复制/粘贴相同的行。

0 投票
0 回答
85 浏览

ios - deinit 不会在我自己的包装类 swift 中被调用

我正在为 AVPlayer(比如“MyPlayer”)编写一个包装器,我可以控制一切。我在 playerItem 和 MyPlayer 上添加了观察者。这就是发生的情况:

所以它创建了一个 MyPlayer 的实例,并且观察者注册到 currentplayerItem 和 player_。
问题是:当我将 player_ 设置为 nil 时,'deinit' 不会在 'MyPlayer.swift' 中被调用。可能是什么问题?

0 投票
2 回答
46 浏览

swift - 我如何处理这个初始化程序?

创建一个使用属性调用的类Parent,并为您的类title编写一个initanddeinit方法。

编写一个名为Child.

我的问题是将其放入代码中(调用super.init(title:)并传递title参数。

0 投票
1 回答
368 浏览

ios - Swift 3 TableViewController 不会取消初始化

我的 Swift 3 iOS 应用程序从 LoginViewController 开始,它连接到 TabBarController,它有 3 个 ChildView,每个都是 NavigationController,它是 ViewController 的 rootView。

一个 ViewController 包含一个 Logout Button,它对 LoginViewController 执行 unwindSegue。

另一个(这个很关键)有 2 个容器视图,其中一个是 TableViewController。TableViewController 使用来自后端的数据动态填充。

当后端给我 0 数据时,一切正常。您可以按下注销按钮和每个 ViewController,以及 ContainerViews 和 TableView 正确获取 deinit()。

一旦 TableViewController 从后端获取数据并显示单元格,它就不再为 TableViewController 调用 deinit()

原因可能是什么?我可以根据要求分享代码。

到目前为止我所做的尝试: 我尝试在存在闭包的任何地方使用无主的自我。现在我不确定这部分我使用@escaping 获取数据的位置:

我感谢任何形式的帮助!