import Foundation final class EscapeGuard { final class Status { fileprivate(set) var isDeallocated: Bool = false } let status = Status() deinit { self.status.isDeallocated = true } } public final class EscapeNotification: NSObject { let deallocated: () -> Void public init(_ deallocated: @escaping () -> Void) { self.deallocated = deallocated } deinit { self.deallocated() } public func keep() { } }