在Objective中,您可以为属性要求一个类和附加协议实现:
@property (nonatomic) UIViewController<UISplitViewDelegate> *viewController;这在斯威夫特有可能吗?从文档看,您只需要一个类或一个协议。
发布于 2017-06-06 22:56:35
在Swift 4中,您可以这样做:
let viewController: UIViewController & UISplitViewDelegate发布于 2015-01-07 19:36:54
实际上,在Swift中有两种方法可以实现这一点:
UIViewController符合它。这是最"Swift“的方法,它是安全的,它是动态的(不需要在编译时指定类)。
协议_UIViewControllerType {}扩展UIViewController:_UIViewControllerType {} class MyClass {弱var viewController: protocol?}
您还可以为这种类型声明一个typealias (只是为了减少代码混乱)。
类MyClass { ViewControllerType = protocol弱变量viewController: ViewControllerType?}我希望下一个Swift版本添加了一种方法来指定这两个约束,而不用使用“幻影协议”.
typealias ViewControllerType = UIViewController: UISplitViewControllerDelegate // wish发布于 2014-07-21 07:48:21
是的,你能做到的
class A < T : SomeClass where T: Comparable> {
var myProperty: T
init(t :T) {
myProperty = t
}
}声明具有T类型属性的类A为SomeClass或子类,并且必须采用Comparable协议
在声明属性时,可以使用协议作为类型。
class MyClass {
var nsobject: NSObjectProtocol
init(object : NSObjectProtocol) {
nsobject = object
}
}
// Pure Swift
protocol RandomNumberGenerator {
}
class Dice {
let generator: RandomNumberGenerator
//specify many protocols
let printer: protocol<Printable, NicePrintable>
}你可以读这里的文件
https://stackoverflow.com/questions/24859053
复制相似问题