Swift:如何检查对象是否被释放

时间:2018-08-21 12:12:37

标签: swift memory-management reference-counting

我正在开发一个小的 weak 数据结构框架。 弱包装对象的集合具有remove()方法。 在方法内部,我将删除一个对象(如果存在),并最终清除包含nil引用的包装器。

weakCollection.remove(object)内部调用object.deinit()时会出现问题(可能间接发生)。

在这种情况下(由于出于比较原因需要复制),由于尝试引用正在释放的对象,因此我将收到SIGABORT,并且此操作被禁止。

  

无法形成对类的实例(0x608000199710)的弱引用   XXX。该对象可能是   过度释放,或正在释放。

通常我会记录下来,抛出错误或警告并跳过。但是我想对此保持安全,并且仅在不处于“释放”状态时才删除对象。 一种方法是读取referenceCount,但快速并不是一个好主意。我能想到的大多数其他反射/元技术都太昂贵了。

另外:我真的很想知道的另一件事是,是否有任何通知/知道/观察者可以连接到我,以便在释放对象时得到通知。

0 个答案:

没有答案