Swift 符合协议的变量接受符合协议的变量

Swift 符合协议的变量接受符合协议的变量,swift,swift3,Swift,Swift3,我在Item类中有一个ProtocolItem1协议类型的变量。我想做的是能够使用这个类并在这个变量中保存符合ProtocolItem1协议的对象,这可能吗?我知道用java可以创建一个接口,并以这种方式实现它。在目标C中,我看到了id,请让我知道 代码: 简短回答:是。 在Swift中,可以创建协议类型的属性。只要符合指定的协议,任何对象都可以分配给该属性 以下稍加修改的代码版本是有效的 protocol ProtocolItem1 {} class Item: NSObject {

我在Item类中有一个ProtocolItem1协议类型的变量。我想做的是能够使用这个类并在这个变量中保存符合ProtocolItem1协议的对象,这可能吗?我知道用java可以创建一个接口,并以这种方式实现它。在目标C中,我看到了id,请让我知道

代码:


简短回答:是。

在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
    }

}
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
    }

}