gpt4 book ai didi

参数中的 Swift 复杂类型

转载 作者:行者123 更新时间:2023-11-28 13:09:29 25 4
gpt4 key购买 nike

为了更清楚一点,我正在寻找一种解决方案,让用户可以传递具有特定子类和协议(protocol)的类,即继承 viewController 和委托(delegate)协议(protocol)的类。我知道可以创建一个协议(protocol)列表,但找不到可以正常工作的解决方案。目前我使用初始化程序并将 viewcontroller 用作参数并检查函数内部的委托(delegate),但我宁愿在参数中使用这些类型。

编辑:想做类似的事情

Protocol prot:Delegate{}

class cla:ViewController{}

class impl{
init(mainUI: cla, prot){
do things
}
}

That way back in the main view controller I can do something like this

class viewController: cla, prot{

var view:impl

override func loadView() {
//Attach to Screen
view = impl(mainUI: self);
}

}

他们发生的事情更多一些,但这是唯一真正相关的部分。目前我使用一个初始化器来在类没有继承正确的协议(protocol)时失败

最佳答案

您可以创建一个代表您的要求的虚拟类型。 typealias 在这种情况下不起作用,但这可能:

class DummyClass: MyViewController, MyDelegateProtocol {}

func needsRequiredClass(input: DummyClass) {...}

MyViewControllerMyDelegateProtocol 是您提到的父类(super class)和委托(delegate)。 DummyClass 将有一个空的实现。

然后,使您的特定类成为 DummyClass 的子类:

class TestClass: DummyClass {...}

你可以传入那个新类:

let test = TestClass()
self.needsRequiredClass(test)

关于参数中的 Swift 复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31880228/

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