我在Item类中有一个类型为ProtocolItem1协议的变量。我想要做的是能够使用这个类,并在这个变量中保存符合ProtocolItem1协议的对象,这可能吗?我知道在java中你可以创建一个接口,并以这种方式实现它。在目标C中我见过id,请告诉我。
代码:
class Item : NSObject {
var obj: ProtocolItem1?
//Other functions and variables
}
class Item2: ProtocolItem1 {
//variables and methods
}
class OtherClass: UIViewController {
var dataSource: Item
//other functions
override func viewDidLoad(){
var object1: Item2 = Item2()
dataSource.obj = object1
}
}
答案 0 :(得分:1)
简答:是的。
在Swift中,您可以使用协议类型创建属性。只要符合指定的协议,就可以将任何对象分配给该属性。
以下稍微修改过的代码版本是有效的Swift。
protocol ProtocolItem1 {}
class Item: NSObject {
var obj: ProtocolItem1?
}
class Item2: ProtocolItem1 {}
class OtherClass: UIViewController {
var dataSource: Item?
override func viewDidLoad(){
let object1 = Item2()
dataSource?.obj = object1
}
}