UIKit中的@State属性

问题描述 投票:-2回答:1

我定义了一个委托类(我需要在其中读取和写入值)。

这是我做的:

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?

但是当我在其上调用方法(无法读取或写入或什至无法在委托内部成功调用我的函数)时,它不起作用...

ios swift xcode delegates swiftui
1个回答
1
投票

是的; @State仅用于SwiftUI,并且您没有使用SwiftUI。无论如何,您在这种情况下都不需要它,因此只需删除该属性,就可以了。

如果像self.delegate?.doSomething()之类的调用似乎什么都不做,通常是因为您没有为delegate属性分配任何内容,或者是您为delegate属性分配了错误的内容。委托是一种公认​​的模式(通常带有协议),并且已经在Stack Overflow上得到了很好的解释。但是,请注意,如果您的委托是一次性的,即,它只是一个帮助器类,那么它就不是委托!这是一个帮手,仅此而已。您只需说let helper = MyClass(...),就可以了。委托用于当您在应用程序的其他地方(例如另一个视图控制器)具有

prexisting

实例,并且您希望向其寻求建议或偶尔向其发送消息时。

© www.soinside.com 2019 - 2024. All rights reserved.