在目标-C上后退按钮dealloc方法被调用。有什么类似于swift的东西吗?
答案 0 :(得分:5)
您似乎明白,deinit
相当于dealloc
。如果没有被调用,你的对象就不会被破坏,这意味着某些东西有强烈的引用。这在ObjC和Swift中是相同的。删除上一个强引用后,系统会调用deinit
。
dealloc
和deinit
都与“后退按钮操作”无关。它们仅与释放对象有关,通常只应执行资源清理。如果您依赖于响应用户操作而调用它们,则可能存在设计错误。
答案 1 :(得分:0)
来自Swift文档:
在取消分配类实例之前立即调用deinitializer。您使用deinit关键字编写deinitializers,类似于使用init关键字编写初始化器的方式。 Deinitializers仅适用于班级类型。
通常,在取消分配实例时,您无需执行手动清理。但是,当您使用自己的资源时,可能需要自己执行一些额外的清理。例如,如果您创建一个自定义类来打开文件并向其写入一些数据,则可能需要在取消分配类实例之前关闭该文件。