在 RxSwift 中访问一个实例的闭包 属性

Accessing a closure property of an instance in RxSwift

我正在尝试深入研究 RxSwift 并找出不同的方法。我使用如下类似的代码结构在 Github 中实现了一些项目。我曾经认为是命令式的方式,但我真的想知道我在 Rxswift 世界中缺少什么。

    class ViewController: UIViewController {
    
    let observableProperty = PublishSubject<Client.DelegateEvent>()

    struct Client {
        
        static var live: Self { Client(events: { stringInputFromSomeWhere in
            observableProperty.asObservable() // Point 3
        }, setable: {
            { _ = SomeManager().doNothing() }
        }, someId: "cool property")}
        
        
        var events: (String) -> Observable<DelegateEvent>
        var setable: () -> ()
        var someId: String
        
        init(events: @escaping (String) -> Observable<DelegateEvent>,
             setable: @escaping () -> (),
             someId: String
            
        ) {
            self.events = events
            self.setable = setable
            self.someId = someId
        }
    
        public enum DelegateEvent {
            case didUpdate(SpecialLocation)
            case didFail(Error)
        }
        
    }
    
    struct SpecialLocation {
        
    }
    
    class SomeManager {
         func doNothing() {
            print("noThing Worked")
        }
    }
    
    override func viewDidLoad() {
      super.viewDidLoad()
        let clearStep = Client.live.someId // Point 1
        let whoAreYou = Client.live // Point 2a 
        whoAreYou.setable() // Point 2b 
        print(whoAreYou.someId)
    
    }

非常感谢您的每一个回答和评论。

Point 1 - Am I accessing a string property of a instance, right ?

严格来说是的,但实例将仅为此次访问创建,然后立即销毁。做 IMO 是相当愚蠢的。

Point 2ab - I think, I am accessing an instance after calling a closure,Actually what am I doing here?

第 2a 点创建了一个客户值(与第 1 点中使用的值不同,但它将具有相同的值。)

点 2b 调用 setable() 值。值对象将在 viewDidLoad 函数结束时销毁。

Point 3 - Getting error, Cannot convert value of type '()' to closure result type 'Observable<ViewController.Client.DelegateEvent>'

Client.live computed 属性 是一个全局变量,您正试图从该全局变量内部访问特定 ViewController 的实例变量,但无法定义哪个实例变量应该访问实例。

So How can I fix this in a meaningful way ?

这个问题我无法回答,因为我不知道“固定”在这种情况下是什么意思...