Например:
Код: Выделить всё
manager.registerObserver(for: name, forObject: nil, ignoreIfSentFrom: self) {
// run this code _only_ if the sender wasn't self
}
Код: Выделить всё
private func registerObserver(_ name: NSNotification.Name, forObject object: AnyObject?,
ignoreIfSentFrom ignoredObject: NSObject, block: @Sendable @MainActor @escaping (Notification) -> ())
{
let newToken = NotificationCenter.default.addObserver(forName: name, object: object, queue: nil) { note in
guard (note.object as AnyObject) !== ignoredObject else { return }
Task { @MainActor in
block(note)
}
}
observerTokens.append(newToken)
}
- (на охранной линии)
Код: Выделить всё
Capture of 'ignoredObject' with non-Sendable type 'NSObject?' in a '@Sendable' closure - (for block(note))
Код: Выделить всё
Sending 'note' risks causing data races; this is an error in the Swift 6 language mode
Подробнее здесь: https://stackoverflow.com/questions/798 ... oncurrency
Мобильная версия