• 1000 и его можно использовать здесь вместо использования обработчика завершения. Давайте что-нибудь с ним сделаем:
func test() {
getNotificationSettingsPublisher().sink { (notificationSettings) in
// Do something here
}
}
Это работает, однако сообщит мне, что результат стока (AnyCancellable
) не используется. Поэтому всякий раз, когда я пытаюсь получить значение, мне нужно либо сохранить отменяемое, либо присвоить его, пока я не получу значение. Иногда задачи отмененные не нужны. Однако я мог сделать это:
func test() {
self.cancellable = getNotificationSettingsPublisher().sink { [weak self] (notificationSettings) in
self?.cancellable?.cancel()
self?.cancellable = nil
}
}
Поэтому, получив значение, я отменяю подписку. (Думаю, я мог бы сделать то же самое при завершении закрытия раковины).
Как правильно это сделать? Потому что, если я использую замыкание, оно будет вызываться столько раз, сколько вызывается функция, а если оно вызывается только один раз, мне не нужно ничего отменять. можно заменить на Combine, и если да, то как бы вы справились с получением одного значения и его отменой?
И последнее, но не менее важное: вызывается завершение, мне все равно нужно отменить подписку? Мне, по крайней мере, нужно обновить отменяемое и установить его на ноль, верно? Я предполагаю, что хранение подписок в наборе предназначено для длительных подписок, но как насчет подписок с одним значением?
Спасибо