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.
        }
    
    
    }
    
  • 相关阅读:
    由铭心提供的免费邮箱
    BT面板安装教程
    Onedrive分享型网盘搭建
    cookie与session
    IntelliJ Idea 2017 免费激活方法
    什么情况下出现的redis
    tomcat编码问题
    idea启动项目报Unable to open debugger port (127.0.0.1:11480): java.net.SocketException "socket closed"
    Sentry异常捕获平台
    亚瑟·阿伦博士的36个问题
  • 原文地址:https://www.cnblogs.com/lidarui/p/5992698.html
Copyright © 2011-2022 走看看