gpt4 book ai didi

swift - RxSwift pointfree 风格避免保留循环

转载 作者:行者123 更新时间:2023-11-30 11:23:05 25 4
gpt4 key购买 nike

我想知道我是否可以像这样使用 Swift/RxSwift 来使用 pointfree-style:

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)
}
}

最佳答案

在使用闭包时,当您指向闭包内部的 self 时,就像在 flappingmap 中一样,如果您不使用 [weak/unowned self],则会创建保留周期。

因此,开发人员有责任避免此类保留周期。因此,每当您在任何闭包中引用 self 时,请尝试根据范围使用weak/unowned。在您的情况下,请选择第二个即 test2 函数。

希望有帮助......!!!

关于swift - RxSwift pointfree 风格避免保留循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51071683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com