[英]Im confused on how can I manipulate the properties inside an instance when it gets deinitialized?
我从Apple文档或快速书中获得了此信息
实例取消初始化后,您仍然可以访问实例内部的属性,并且可以在实例完全消失之前根据需要对其进行操作。
我很困惑,例如,当我们使用deinit()
方法中的instances属性执行一些数学deinit()
时,它们是什么意思? 还是说当我们打印来自特定实例一部分的string
类型的属性时,也来自deinit
()方法? 如果是这样,那么在deinit()
属性时, deinit()
方法是操纵属性的唯一方法吗?
如果您有一个带有aa var的swift类,那么您知道必须进行清理,因为ARC无法释放它(例如C内存),您仍然可以在deinit中执行此操作。 存储在属性中的指针仍然有效!
但是,它没有更多用处(可以通过通知中心或kvo进行最终观察),因为不能保证何时调用deist。 仅在释放之前(无论何时)都被调用
deinit
被释放之前右称为(当retainCount到达0),因此所有的属性仍然有效,就可以打印字符串。 您无需在deinit
中将属性显式设置为nil,因为这会自动发生。
话虽如此,大多数类甚至都不需要实现deinit
大多数时候,我使用deinit
删除实例注册到的观察者,并在需要时发布任何通知,诸如此类。
据我所知, deinit
方法在实例被deinit
之前被调用,从而为您提供了最终的机会来执行您需要做的任何事情(清理,关闭文件,终止网络连接等)。
该文档说的是,在调用deinit
,您的对象尚未被初始化(但很快就会被deinit
),因此您仍然可以(最后一次)访问其属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.