首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为实现多个协议的任何对象定义Swift类型别名

为实现多个协议的任何对象定义Swift类型别名
EN

Stack Overflow用户
提问于 2015-04-18 16:22:23
回答 4查看 11.6K关注 0票数 25

我正在尝试为符合多个协议的UITableViewCell的委托属性定义一个typealias。这就是我要做的,Swift抱怨我的语法错误:

代码语言:javascript
复制
// The typealias definition
typealias CellDelegate = AnyObject<UIPickerViewDataSource, UIPickerViewDelegate>

// In my UITableViewCell subclass:
weak var delegate: CellDelegate?

“无法专门化非泛型类型AnyObject”是我得到的错误。我怎样才能正确地做到这一点?

EN

回答 4

Stack Overflow用户

发布于 2015-04-18 17:05:08

如果要声明多协议:

代码语言:javascript
复制
protocol<A, B>
票数 3
EN

Stack Overflow用户

发布于 2016-09-15 14:30:11

在Swift 3中,语法发生了变化。

直到Swift 2.3:typealias CellDelegate = protocol<UIPickerViewDataSource, UIPickerViewDelegate>

从Swift 3:typealias CellDelegate = UIPickerViewDataSource & UIPickerViewDelegate开始

票数 2
EN

Stack Overflow用户

发布于 2015-04-18 16:48:21

我不明白您为什么要这样输入weak var delegate: <CellDelegate>?,为什么不输入weak var delegate: CellDelegate?

问题是AnyObject是通用的。在第一行中,您试图使AnyObject成为非泛型,但事实并非如此。

你最好创建一个类来实现它们(数据源和委托)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29714773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档