为什么在 dealloc 前没有移除 KVO observer 会导致 app crash?

Why will app crash if did not remove KVO observer before dealloc?

我知道我们需要在实例 dealloc 之前删除 KVO observe。

但是为什么会发生这种崩溃?

如果您使用 Swift4 KVO,则不需要。它被安全地处理了。

据说之前需要它,因为向已释放的实例发送消息会使应用程序崩溃。这个概念类似于提到的答案 .

要了解有关 Swift3 与 Swift4 KVO 内存管理的更多信息,请参阅 here