Swift:deinit没有调用后退按钮动作

时间:2014-09-17 09:23:28

标签: ios swift

在目标-C上后退按钮dealloc方法被调用。有什么类似于swift的东西吗?

2 个答案:

答案 0 :(得分:5)

您似乎明白,deinit相当于dealloc。如果没有被调用,你的对象就不会被破坏,这意味着某些东西有强烈的引用。这在ObjC和Swift中是相同的。删除上一个强引用后,系统会调用deinit

deallocdeinit都与“后退按钮操作”无关。它们仅与释放对象有关,通常只应执行资源清理。如果您依赖于响应用户操作而调用它们,则可能存在设计错误。

答案 1 :(得分:0)

来自Swift文档:

在取消分配类实例之前立即调用deinitializer。您使用deinit关键字编写deinitializers,类似于使用init关键字编写初始化器的方式。 Deinitializers仅适用于班级类型。

通常,在取消分配实例时,您无需执行手动清理。但是,当您使用自己的资源时,可能需要自己执行一些额外的清理。例如,如果您创建一个自定义类来打开文件并向其写入一些数据,则可能需要在取消分配类实例之前关闭该文件。