RxSwift无点样式避免保留周期

时间:2018-06-27 21:28:56

标签: swift rx-swift

我想知道我是否可以像这样使用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 :(得分:0)

在使用闭包时,当您指向内部内部闭包时(例如在flapmap的情况下),如果不使用[弱/无主的自我],则会创建保留周期。

因此,开发人员有责任避免此类保留周期。因此,每当您在任何闭包内部引用self时,请尝试根据作用域使用弱/无所有权。您可以使用第二个功能,即test2功能。

希望有帮助... !!!