detach 抽象方法

void detach(
  1. Object detach
)

从使用 detach 方法附加的值中解除这个销毁器。

此销毁器与值之间的每个附加关系,是通过调用 attach 方法并使用 detach 对象作为 detach 参数创建的,将被移除。

如果销毁器多次附加到同一个值,并且使用不同的解除密钥,则只移除使用 detach 的附加。

解除后,如果对象变得不可访问,则附加不会触发任何回调。

示例

class Database {
  // Keeps the finalizer itself reachable, otherwise it might be disposed
  // before the finalizer callback gets a chance to run.
  static final Finalizer<DBConnection> _finalizer =
      Finalizer((connection) => connection.close());

  final DBConnection _connection;

  Database._fromConnection(this._connection);

  void close() {
    // User requested close.
    _connection.close();
    // Detach from finalizer, no longer needed.
    // Was attached using this object as `detach` token.
    _finalizer.detach(this);
  }

  // Some useful methods.
}

实现

void detach(Object detach);