美文网首页
Swift中Delegate的正确使用姿势

Swift中Delegate的正确使用姿势

作者: 陳云峰 | 来源:发表于2017-06-22 23:25 被阅读468次

    前言

    委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象。

    比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象B的引用存为一个实例变量。这个对象B称为委托。当事件发生时,它检查委托对象是否实现了与该事件相适应的方法。如果已经实现,则调用该方法。

    由于松耦合的原因,一个对象能成为多个对象的委托。某些情况下,相较于通过继承让子类实现相关的处理方法,可以有效减少代码复杂度。所以iOS中也大量的使用了委托。

    目标

    在A类里面声明一个ADelegate的代理,B类遵循并使用ADelegate定义的函数。

    实现

    A.swift

    //创建协议  
    protocol ADelegate:NSObjectProtocol  
    {  
        //回调方法 传一个String类型的值  
        func delegateMethod(string:String)  
    }  
    class A: UIViewController  
    {  
        weak var delegate:ADelegate?  
        override func viewDidLoad()  
        {  
            super.viewDidLoad() 
            ...
        }  
      
        func goBack()  
        {  
            //调用代理方法  
            if delegate != nil
            {  
                delegate?.delegateMethod(string:"123")  
                self.navigationController?.popToRootViewControllerAnimated(true)  
            }  
              
        }  
    }  
    

    B.swift

    class A: UIViewController, ADelegate  
    {  
    
        override func viewDidLoad()  
        {  
            super.viewDidLoad() 
            ...
        }  
      
        //push  
        func nextPage()  
        {  
            let aController = A()  
            //指定代理  
            aController.delegate = self  
            self.navigationController!.pushViewController(aController, animated:true)  
        }  
    
    
        //接收传过来的值  
        func delegateMethod(string:String)  
        {  
            ...
        }  
    }  
    

    总结

    Objective-C中delegate的实现和Swift中delegate基本一样的,委托也是iOS编程中常见的一种设计模式。在平常使用过程中,要多加注意,才能更加熟练地使用。

    相关文章

      网友评论

          本文标题:Swift中Delegate的正确使用姿势

          本文链接:https://www.haomeiwen.com/subject/dodqcxtx.html