gpt4 book ai didi

swift - 如何在 Swift 中将参数作为 View Controller 实例化协议(protocol)来引用?

转载 作者:行者123 更新时间:2023-11-30 13:47:06 26 4
gpt4 key购买 nike

我有一个自定义协议(protocol),用于为我的一些 View Controller 定义一些行为:

protocol MyProtocol {
...
}

我希望能够将函数中的参数类型声明为实现此协议(protocol)的 UIViewControllers。例如,在 Objective C 中我可以这样做:

-(void)doSomethingWithController:(UIViewController<MyProtocol>*)controller;

如何在 Swift 中执行此操作?

最佳答案

protocol MyProtocol {
// ...
}

func doSomethingWithController<T: UIViewController where T: MyProtocol> (controller: T) {
// ...
}

/* Example */
class MyControllerA : UIViewController, MyProtocol {}
class MyControllerB : UIViewController {}

var a = MyControllerA()
var b = MyControllerB()

doSomethingWithController(a) // ok
doSomethingWithController(b) // compile time error

关于swift - 如何在 Swift 中将参数作为 View Controller 实例化协议(protocol)来引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34793180/

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