我正在开发一个小的 weak 数据结构框架。
弱包装对象的集合具有remove()
方法。
在方法内部,我将删除一个对象(如果存在),并最终清除包含nil引用的包装器。
在weakCollection.remove(object)
内部调用object.deinit()
时会出现问题(可能间接发生)。
在这种情况下(由于出于比较原因需要复制),由于尝试引用正在释放的对象,因此我将收到SIGABORT,并且此操作被禁止。
无法形成对类的实例(0x608000199710)的弱引用 XXX。该对象可能是 过度释放,或正在释放。
通常我会记录下来,抛出错误或警告并跳过。但是我想对此保持安全,并且仅在不处于“释放”状态时才删除对象。
一种方法是读取referenceCount
,但快速并不是一个好主意。我能想到的大多数其他反射/元技术都太昂贵了。
另外:我真的很想知道的另一件事是,是否有任何通知/知道/观察者可以连接到我,以便在释放对象时得到通知。