gpt4 book ai didi

ios - UIViewController 子类的 Swift 协议(protocol)

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

是否可以声明一个协议(protocol),同时定义符合它的对象类型?

我有一组闭包,我想在我的项目中 UIViewController 的各种不同子类中进行配置。 (它们都是相关的)。

我想要一个工厂函数来创建正确类型的 UIViewController 子类,然后将其作为协议(protocol)类型返回。

这样我就可以配置各种闭包并将 View Controller 推送到导航 Controller 上。

我可以...

返回 UIViewController 父类(super class)并将其插入导航堆栈,但随后无法正确设置闭包,因为编译器不知道它符合协议(protocol)。

或者...

返回协议(protocol)类型,我可以正确设置闭包,但编译器不知道它是一个 UIViewController 子类,所以我无法将它推送到导航 Controller 上。

有没有办法做到这两点?

谢谢

最佳答案

在 Objective C 中,您可以像这样声明一个变量:

UIViewController <Protocol> *variable;

不幸的是,这对于 Swift 来说是不可能的,考虑到 Swift 是如何面向协议(protocol)的,这很奇怪。

这很不舒服,因为就像你发现的那样,编译器不能同时知道类和协议(protocol),所以你必须转换两次,你必须检查对象是否是允许的在运行时类,并且必须在您的代码中记录它以防止人们发送错误类型的对象。

关于ios - UIViewController 子类的 Swift 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596262/

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