swift-protocol

来源:互联网 发布:世界各国gdp数据 编辑:程序博客网 时间:2024/05/30 23:51
import Foundation//定义 一个协议//遵守 基协议  可以 遵守多个  继承 协议protocol WorkProtocol {    func work()//必须要实现的}//定义 可选的 必须加 @objc  和 oc 兼容//如果协议遵守了基协议 那么  遵守协议的类要继承NSObject类@objc protocol BuyWoodProtocol:NSObjectProtocol {    //默认必须要实现    func buyWoodWithWeight(w:Int) ->Void        //可选的 可以实现也可以不实现 optional 以前版本 是@optional    optional func song()    optional func driveCar()        }@objc protocol NewProtocol {    optional func jump()    }class Person :NSObject,BuyWoodProtocol,NewProtocol {    var age  = 0    init (age:Int) {        self.age = age    }    //必须实现协议中的方法    func buyWoodWithWeight(w: Int) {        Swift.print("buyWood:\(w) t")    }        func print(){        Swift.print("print")    }        //可以实现可选的方法    func song() {        Swift.print("song")    }}//定义一个对象let xiaohong = Person(age: 100)xiaohong.print()//强制 转化为 遵守协议的对象//as 强制转化引用对象类型let delegate = xiaohong as BuyWoodProtocol//delegate 就可以调用协议中的方法//执行协议中的方法delegate.buyWoodWithWeight(1000)//可选的方法  不能直接调用  要用可选值//如果有就调用 没有就不调用返回nildelegate.song?()delegate.driveCar?()

0 0