zoukankan      html  css  js  c++  java
  • Swift 协议

    /// 一般情况下,定义的协议都必须实现
    protocol SomeProtocal {
        
        func doSomething()
        
    }
    
    
    /// 定义一个类,并且遵守协议
    class Teacher:SomeProtocal {
        
        func doSomething() {
            print("回家烧饭")
        }
    }
    
    
    class Student:SomeProtocal{
        
        func doSomething() {
            print("回家写作业")
        }
        
        
    }
    
    
    //定义协议的时候 协议后面最好跟上:class ,表示只能被类遵守   delegate的属性最好用weak 避免循环引用
    
    protocol CookDelegate: class{
        
        func cookFood()
        
    }
    
    class person {
        //定义代理属性
        weak var delegte:CookDelegate?
        
        func doSomeThing() {
            delegte?.cookFood()
        }
        
    }
    
    
    
    //4、如何让协议中的方法是可选方法
    //optional属于OC特性,如果协议中有可选的方法,那么必须在protocol和optional前面都加上@objc
    @objc protocol TestProtocol: class {
        @objc optional func test()
    }
    
    class Dog: TestProtocol {}
    
    
    
    
    class ViewController: UIViewController ,CookDelegate {
        internal func cookFood() {
            print("开始做饭了")
        }
    
    
        
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let stud = Student.init()
            
            stud.doSomething()
            
            
            
            
            let person2 = person.init()
            person2.delegte = self
            person2.doSomeThing()
    
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    }
    
  • 相关阅读:
    136. 只出现一次的数字
    Eclipse Git Pull报 cannot open git-upload-pack错误的解决方案
    数据结构和算法1 稀疏数组
    Netty学习二 TCP粘包拆包以及Netty解决TCP粘包拆包
    Java值传递和引用传递
    Git命令教程
    Properties文件载入工具类
    有序的properties的工具类
    对象操作工具类
    反射工具类
  • 原文地址:https://www.cnblogs.com/lidarui/p/5992698.html
Copyright © 2011-2022 走看看