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.
        }
    
    
    }
    
  • 相关阅读:
    Spring 集成Quartz
    windows跟linux文件共享
    5.5.3使用terminfo功能标志
    5.4.1 termios结构,关闭回显功能,一键入字符fgetc立刻返回,不用按下回车键
    5.2与终端进行对话
    5.1对终端进行读写
    4.8资源和限制
    4.7日志
    大小端问题
    QWebView下载文件,QUrl中解析文件名
  • 原文地址:https://www.cnblogs.com/lidarui/p/5992698.html
Copyright © 2011-2022 走看看