gpt4 book ai didi

Swift 3,协议(protocol)中的函数返回符合协议(protocol)的类的对象

转载 作者:搜寻专家 更新时间:2023-10-31 19:28:38 25 4
gpt4 key购买 nike

我已经阅读了很多关于类和协议(protocol)的文章,但仍然没有找到解决方案。可能是我没有完全理解它们。

所以有一个简单的协议(protocol)(删除了一些与问题无关的部分):

protocol InfoObject : NSObjectProtocol
{
var statusImage: UIImage? {get}

func viewControllerForItemIndex(_ index: Int?) -> UIViewController?
}

但我希望函数 viewControllerForItemIndex 不仅返回类型为 UIViewController? 的对象,而且它应该符合协议(protocol) InfoObjectDisplaying(不是也显示在这里)。

在 Objective-C 中我会写:

- (UIViewController<InfoObjectDisplaying>*)viewControllerForItemIndex:(NSInteger) index;

这在 swift 中可能吗?

最佳答案

首先,你不需要在 Swift 中继承 NSObjectProtocol :)

不,您不能直接在 Swift 中执行此操作。您可以要求对象符合协议(protocol)或类,但不能同时符合两者。但是,您可以viewControllerForItemIndex 声明为通用函数,并要求其类型参数符合特定要求:

func viewControllerForItemIndex<T: UIViewController where T: InfoObjectDisplaying>(_ index: Int?) -> T?

关于Swift 3,协议(protocol)中的函数返回符合协议(protocol)的类的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43480194/

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