Pull to refresh

Comments 5

.assign(to: \.currentWeather, on: self)

Так делать нельзя, assign захватит self и будет ретейн цикл.

Верно. Вы можете использовать вместо этого

.sink{[weak self] weather in
        self?.currentWeather = weather
}

Или использовать новый в iOS 14 метод https://developer.apple.com/documentation/combine/fail/assign(to:)

assign(to:)
 //  .assign(to: \.currentWeather , on: self)
     .assign(to: &$currentWeather)
 //    .store(in: &self.cancellableSet)

код стал еще проще.

По сути, assign(to:) - это прямая передача публикуемого значения другому "издателю" Publisher $currentWeather и никакой reference cycle не возникает.

Sign up to leave a comment.

Articles