Метод detach
- 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);
© 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/detach.html