自学swift (3) --- 协议

协议这个东西吧,就是定义一套规范的方法,属性,不去实现它。
可以被类,结构体等实现。

protocol SomeProtocol {
    var  fullName : String{ get set }
    func des() -> String
    func funcDemo(name:String , age : Int) -> String
}

属性后的get set是要求这个属性的访问权限,可读,可写。然而你为一个var fullName: String{ get } 属性写了setter方法也不会错。
方法只需要定义方法名字、传参、返回值就可以了 其余不需要管,遵守协议的类,结构体等会去实现。
然而你遵守协议的时候可以有2种方法
1.在B类里写协议,B类里调用,由A类实现

BController.swift

protocol SomeProtocol : NSObjectProtocol{
    func funcDemo(name:String , age : Int) -> String
}

weak var some:SomeProtocol?
 override func viewDidLoad() {
    super.viewDidLoad()
    print("some\(self.some?.funcDemo("jam", age: 12))")
 }

AController.swift
class Controller: UIViewController , SomeProtocol{
 func funcDemo(name: String, age: Int) -> String {
        return "name \(name) , age \(age)"
    }

let B = BController()
B.some = self
}

这要注意
let B = BController()
B.some = self

这句必须执行到。即保证BController执行协议的时候要有人遵守

2.某个类或结构体来遵守这个协议并实现

    class SubClass: FatherClass ,SomeProtocol {
        var fullName: String = ""
        func funcDemo(name: String, age: Int) -> String {
            return "protocol func"
        }
    }

如果这个类或结构体有父类,父类写在最前边,如果还需要遵守多个协议,在后边用”,”隔开。遵守协议的类里要把协议里的内容实现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值