我定义了一个委托类(我需要在其中读取和写入值)。
这是我做的:
class myClass: NSObject {
private let myBool: (Bool) -> Void
init(onBoolValue: @escaping (Bool) -> Void) {
self.myBool = onBoolValue
}
}
下面我有一些func等扩展名...
我注意到我非常熟悉SwiftUI,但是我在viewController中看到的是这样定义的:
@State var delegate: myClass! = nil
由于我不使用SwiftUI,并且需要此@state属性才能在UiKit中使用,所以UIKit中的此定义等于什么?
我尝试过类似的东西:
weak var delegate: myClass?
但是当我在其上调用方法(无法读取或写入或什至无法在委托内部成功调用我的函数)时,它不起作用...
是的; @State
仅用于SwiftUI,并且您没有使用SwiftUI。无论如何,您在这种情况下都不需要它,因此只需删除该属性,就可以了。
如果像 prexistingself.delegate?.doSomething()
之类的调用似乎什么都不做,通常是因为您没有为delegate
属性分配任何内容,或者是您为delegate
属性分配了错误的内容。委托是一种公认的模式(通常带有协议),并且已经在Stack Overflow上得到了很好的解释。但是,请注意,如果您的委托是一次性的,即,它只是一个帮助器类,那么它就不是委托!这是一个帮手,仅此而已。您只需说let helper = MyClass(...)
,就可以了。委托用于当您在应用程序的其他地方(例如另一个视图控制器)具有