问题标签 [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 回答
264 浏览

ios - Swift:UIViewController 不会自动取消初始化

我在我的 UIViewController 中添加了以下代码:

然后我使用了下面的代码:

但是视图控制器的 deinit 没有发生,我在这里缺少什么?

我的问题是,在我回到主视图控制器,然后再回到 newViewController 后,newViewController 并没有被 deinit,所以他的属性保持原样,他的变量也保持不变......

0 投票
1 回答
1994 浏览

ios - 子视图控制器中的 deinit

我有一个标签栏控制器,其中一个标签包含一个表格视图。单击一行时,我会选择一个新的子控制器。

在这个新控制器中,我有一个 deinit 删除观察者并打印“控制器在此处取消初始化”。

当我按下导航栏中的后退按钮时,我可以看到在此操作上调用了 de-init。

现在......我在该子控制器中有另一种方法,它设置选项卡栏控制器的活动选项卡。发生此操作时,我看不到指示在这种情况下未调用 de-init 的打印语句。

我想知道如何解决这个问题?如果不调用 deinit,我担心我会在内存中保留额外的东西。

更新: 在我设置活动选项卡的方法中,我还想在当前活动的子控制器上 popToRoot。我尝试了以下方法:

我收到以下错误:

这是有道理的,但我想知道,有没有办法解决这个问题?

更新 2

为了避免上述问题,我将 popToRoot 放在我的观察者中,并将 tabbar.setSelectedIndex 添加到 viewDidDisappear 中。

但我不明白为什么当我按下导航返回栏按钮时标签栏没有切换索引(我不想要它,但我不明白为什么?)

当我在 checkForSeg 函数中显式调用 popToRoot 时,viewDidDisappear 会执行“tabbar.setSelectedIndex”行(根据需要),但是当我按下导航返回栏按钮时(也不需要)。我不明白这是为什么?因为我没有为何时应该或不应该执行选项卡更改实现任何自定义逻辑。

另外,我每次都会收到打印声明

0 投票
0 回答
298 浏览

ios - Swift 行为中的 deinit

我在 a 中编写了以下代码Swift playground

控制台显示:

我的问题是不应该像下面这样?

0 投票
2 回答
10349 浏览

swift - 如何在swift中的类定义中调用deinit方法

我想定义一个方法,当这个类中的变量增加到某个值时,可以销毁它所属的实例。我试图做类似以下的事情:

但我会收到错误消息说“期望'{'用于反初始化”。

反正班内有自毁吗?

0 投票
0 回答
208 浏览

swift - UIButton deinit 未被调用

我有一个自定义 UIButton 并想在按下它后将其删除。但是当我尝试这样做时,不知何故没有调用 deinit 。我在一个空项目中试过这个:

如果我直接在 中删除它viewDidLoad(),将调用 deinit,但是每当我使用如上所示的代码时,什么都不会显示。我怎样才能让它调用deinit?这是否意味着它没有被释放或者只是没有被调用 deinit ?

0 投票
1 回答
392 浏览

ios - 使用 Swift 的内存管理问题

我们遇到了一些内存分配问题。当我运行我的应用程序并进入某个页面时,每次进入该页面时,内存计数都会增加 30mb。

我已将 IBOutlets 添加为 Weak 并将变量声明为 ? (即可选),虽然内存没有释放对象并且deinit()在我卸载我的页面时没有被调用。

下面是我的代码
—————————</p>

宣言

0 投票
2 回答
340 浏览

swift - 绑定到 NSToolbarItem 的 Cocoa 连接是否会阻止取消初始化?

尝试将通过连接绑定到属性 (optionSegment) 的选定段NSToolbarItem设置NSSegmentedControl。这样子类化窗口控制器

或者,将 optionSegment 属性放在NSDocument子类中并绑定到该子类。每个作品。问题是,有了这个绑定,或者看似任何对 的绑定NSToolbarItem,我的任何对象(视图、视图控制器、文档等)都不会取消初始化。有了绑定,他们就没有。删除绑定,他们这样做。

任何想法为什么会这样?建议?好难过。

谢谢!

0 投票
1 回答
483 浏览

ios - deinit 仅在视图控制器打开时被调用

这与内存泄漏问题有关。我有一个视图控制器,它通过调用 performSegueWithIdentifier 显示,并通过调用 self.dismissViewController 关闭。我在这个视图控制器中有一个 deinit 函数,但是当调用dismissViewController时它不会被调用,它只在显示视图控制器时被调用。有人可以解释为什么我会看到这种不寻常的行为吗?谢谢!

0 投票
2 回答
4021 浏览

swift - 如何使deinit在swift中生效

我有一个汽车课。假设一辆汽车去垃圾场,这辆车不应该再计入总人口中。我有 deinit 功能,但我如何系统地从汽车群体中删除汽车?换句话说,我如何让 deinit 生效?

我有一个类变量isJunk,但不知道如何使用它来完成这项工作。

0 投票
1 回答
335 浏览

ios - 展开委托不会取消“中间”视图

我有一个导航控制器(NC)和三个视图控制器(A、B、C),导航模式如下:

如果我从 A 转到 C 并“返回”,则 B 和 C 的 deinit 方法都会被调用。

如果我使用Unwind Segue 从 C 转到 A,则不会调用 B deinit。

不清楚为什么-我的应用程序中有另一个类似的序列,并且无论“返回”或“展开”操作如何,都会调用 deinits。

知道什么会导致 B 在展开操作后“保持活力”吗?