加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift3.0 协议

发布时间:2020-12-14 06:12:12 所属栏目:百科 来源:网络整理
导读://1. 协议的定义protocol SportProtocol{ //默认情况下,协议中的方法都是必须实现的方法 func playBasketball() func playFootball()}//2. 定义类,并且遵守协议class teacher : SportProtocol{ func playFootball() { print("踢足球") } func playBasketba


//1. 协议的定义
protocol SportProtocol{
    //默认情况下,协议中的方法都是必须实现的方法
    func playBasketball()
    func playFootball()
}

//2. 定义类,并且遵守协议
class teacher : SportProtocol{
    func playFootball() {
        print("踢足球")
    }
    
    func playBasketball() {
        print("打篮球")
    }
}

//3.LJStudent 继承自NSObject,然后遵守的是SportProtocol协议
class LJStudent : NSObject,SportProtocol{
    func playFootball() {
        print("踢足球")
    }
    
    func playBasketball() {
        print("打篮球")
    }
}

// 4.协议在代理设计模型中的使用
/*
    定义协议时,协议后面最好跟上:class ,表明这个协议只给类用(否则结构体,枚举类型也可以使用这个协议)
    delegate的属性最好用weak,用于防止产生循环引用
 */

protocol BuyTitcketDelegate: class{
    func buyTitcket()
}

class myPersonClass{
  
    //定义代理属性
    weak var delegate:BuyTitcketDelegate?
    
    func goToBeijing()  {
        
        //如果这里的delegate存在的话,才会去执行buyTitcket这个函数,否则就不执行buyTitcket这个函数了
        delegate?.buyTitcket()
    }
}

//5. 如何让协议中的方法是可选方法
// optional 属于OC 特性,如果协议中有可选的方法,那必须在proctocol前面加上@objc,也需要在optional前面加上@objc

@objc protocol TestProtocol{
  @objc optional func test()
}

class Dog : TestProtocol{
    
    //这个方法可以执行,也可以不执行,就变成了可选类型了
    func test() {
        
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读