Spec-Zone.ru › Dart 2

dart:core

Метод attach

void attach(
  1. Object value,
  2. T finalizationToken,
  3. {Object? detach}
)

Присоединяет этот финализатор к value.

Когда value больше не доступен программе, но всё ещё имеет привязку к этому финализатору, обратный вызов этого финализатора может быть вызван с finalizationToken в качестве аргумента. Обратный вызов может быть вызван не более одного раза на активную привязку, которая не была отсоединена вызовом Finalizer.detach.

Если предоставлено значение, не являющееся null detach, этот объект может быть передан в Finalizer.detach для повторного отсоединения привязки.

Аргументы value и detach не учитываются при определении доступа к объектам в программе. Оба должны быть объектами, поддерживаемыми в качестве ключа Expando. Они могут быть одним и тем же объектом.

Пример:

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

  factory Database.connect() {
    // Wraps the connection in a nice user API,
    // *and* closes connection if the user forgets to.
    final connection = DBConnection.connect();
    final wrapper = Database._fromConnection();
    // Get finalizer callback when `wrapper` is no longer reachable.
    _finalizer.attach(wrapper, connection, detach: wrapper);
    return wrapper;
  }

  Database._fromConnection();

  // Some useful methods.
}

Несколько объектов могут быть прикреплены с использованием одного и того же маркера финализации, и финализатор может быть прикреплён несколько раз к одному и тому же объекту с разными или одинаковыми маркерами финализации.

Реализация

void attach(Object value, T finalizationToken, {Object? detach});

© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/Finalizer/attach.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API