RxSwift стиль pointfree избежать циклов сохранения - PullRequest
0 голосов
/ 28 июня 2018

Мне интересно, могу ли я использовать стиль pointfree, используя Swift / RxSwift, вот так:

class MyClass {
   private let ageService: Observable<Int> = AgeService()
   private let userService: Observable<Bool> = UserService()

    func test() ->  Observable<Int>{
       return userService
                  .getRandomUser()
                  .flatMap(self.networkService.ageFromUser)
    }

Или я должен всегда идти с ..?

func test2() ->  Observable<Int>{
   return userService.getRandomUser().flatMap { [weak self] user in
       guard let strongSelf = self else { return .empty() }
       return strongSelf.networkService.ageFromUser(user) 
   }
}

1 Ответ

0 голосов
/ 29 июня 2018

При работе с замыканиями, когда вы указываете на себя внутри замыкания, как в случае с флап-картой, создается цикл сохранения, если вы НЕ используете [слабое / неизвестное Я].

Таким образом, разработчик обязан избегать подобных циклов сохранения. Поэтому всякий раз, когда у вас есть ссылка на себя внутри любого замыкания, старайтесь использовать слабые / неизвестные в соответствии с областью действия. В вашем случае перейдите ко второй функции, т. Е. Test2.

Надежда помогает ... !!!

...