swift3.0 协议

前端之家收集整理的这篇文章主要介绍了swift3.0 协议前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


  1. //1. 协议的定义
  2. protocol SportProtocol{
  3. //默认情况下,协议中的方法都是必须实现的方法
  4. func playBasketball()
  5. func playFootball()
  6. }
  7.  
  8. //2. 定义类,并且遵守协议
  9. class teacher : SportProtocol{
  10. func playFootball() {
  11. print("踢足球")
  12. }
  13. func playBasketball() {
  14. print("打篮球")
  15. }
  16. }
  17.  
  18. //3.LJStudent 继承自NSObject,然后遵守的是SportProtocol协议
  19. class LJStudent : NSObject,SportProtocol{
  20. func playFootball() {
  21. print("踢足球")
  22. }
  23. func playBasketball() {
  24. print("打篮球")
  25. }
  26. }
  27.  
  28. // 4.协议在代理设计模型中的使用
  29. /*
  30. 定义协议时,协议后面最好跟上:class ,表明这个协议只给类用(否则结构体,枚举类型也可以使用这个协议)
  31. delegate的属性最好用weak,用于防止产生循环引用
  32. */
  33.  
  34. protocol BuyTitcketDelegate: class{
  35. func buyTitcket()
  36. }
  37.  
  38. class myPersonClass{
  39. //定义代理属性
  40. weak var delegate:BuyTitcketDelegate?
  41. func goToBeijing() {
  42. //如果这里的delegate存在的话,才会去执行buyTitcket这个函数,否则就不执行buyTitcket这个函数
  43. delegate?.buyTitcket()
  44. }
  45. }
  46.  
  47. //5. 如何让协议中的方法是可选方法
  48. // optional 属于OC 特性,如果协议中有可选的方法,那必须在proctocol前面加上@objc,也需要在optional前面加上@objc
  49.  
  50. @objc protocol TestProtocol{
  51. @objc optional func test()
  52. }
  53.  
  54. class Dog : TestProtocol{
  55. //这个方法可以执行,也可以不执行,就变成了可选类型了
  56. func test() {
  57. }
  58. }

猜你在找的Swift相关文章