UIKit 中的@State 属性

@State property in UIKit

我定义了一个委托class(我需要在里面读写值)

这是我做的:

class myClass: NSObject {
private let myBool: (Bool) -> Void

init(onBoolValue: @escaping (Bool) -> Void) {
    self.myBool = onBoolValue
   }
}

下面我有一个带有一些功能等的扩展...

我注意到我对 SwiftUI 非常熟悉,但我看到 viewController 中的定义是这样的:

  @State var delegate: myClass! = nil

因为我没有使用 SwiftUI,我需要这个 @state 属性 在 UiKit 中工作,这个定义在 UIKit 中的等价物是什么?

我尝试过类似的东西:

    weak var delegate: myClass?

但是当我调用它的方法时它不起作用(不能读取或写入甚至不能成功调用我在委托中的函数)...

没错; @State 仅适用于 SwiftUI,您没有使用 SwiftUI。反正在这种情况下你不需要它,所以只要删除那个属性就可以了。

如果像 self.delegate?.doSomething() 这样的调用似乎什么也没做,那通常是因为您未能将任何内容 分配给 delegate 属性,或者因为你给 delegate 属性 分配了错误的东西。委托是一种成熟的模式(通常伴随着协议),并且已经在 Stack Overflow 上得到了很好的解释。

但是,请注意,如果您的委托是一次性的——也就是说,它只是一个助手 class——那么它就不是委托!它是一个帮手,仅此而已。您只需说 let helper = MyClass(...) 就可以了。委托适用于当您在应用程序的其他地方有一个 prexisting 实例时,例如另一个视图控制器,并且您想向它寻求建议或偶尔向它发送消息。