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);