【问题标题】:Swift agreement issue, how to expressswift协议问题,怎么表达
【发布时间】:2017-04-27 06:57:02
【问题描述】:
@protocol XXXDelegate <NSObject>
@property (nonatomic, strong) XXX
@end
id<XXXDelegate> msg = obj;
[msg XXX]
1.id<XXXDelegate> msg = obj
在swift中是如何编写这种类型
使用swift如何表达一个泛型遵循一个协议...?
谢谢。
【问题讨论】:
标签:
ios
objective-c
swift
【解决方案1】:
一般来说,如果您打算存储对符合协议XXXDelegate 的某些类型的引用,则需要像var delegate: XXXDelegate? 一样编写它。
如果您询问是否引用与协议匹配的具体类 - 没有简单的方法(这与 swift 协议的整体理念背道而驰)。您可以使用通用函数/类约束来执行此操作,也可以使用一种称为类型擦除的技术。
第一个更直接
class Generic<T: SomeClass> where T: XXXDelegate {
var delegate: T?
}