美文网首页
Swift代理方法的使用

Swift代理方法的使用

作者: Ice丶泽 | 来源:发表于2016-10-28 09:19 被阅读0次

    开始之前,先普及一下Protocol协议及委托代理(Delegate)传值,不清楚的可以先看看

    1.代理方法

    这里先上代码了

    ①创建一个代理方法

    protocol FirstViewControllerDelegate{
    
    fun firstDelegate()
    
    }
    

    上面为swift声明的最简单的一种代理格式

    @objc protocol FirstViewControllerDelegate: NSObjectProtocol{
    
    optional func firstDelegate(returnString:String)
    
    }
    

    在这个代理的声明中,可以明显看出,增加了一些额外的修饰符

    1》引入@objc是为了引入 optional,用 optional 修饰代理方法,那么这个方法就变成可选方法,无论在代理对象中是否实现,都不受影响。
    2》引入 NSObjectProtocol 是因为我们如果想用 weak 修饰代理属性,需要继承自这个类,这里有一篇关于 weak 修饰 Delegate,防止循环引用的文章,不明白的可以看看

    ②声明一个代理对象

     weak var delegate: FirstViewControllerDelegate?
    

    这里用 weak 修饰,防止循环引用的产生

    ③触发代理事件

     if self.delegate!.respondsToSelector(Selector("firstDelegate:")){
         self.delegate!.firstDelegate!("delegate")
     }
    

    1》self.delegate!.respondsToSelector(Selector("firstDelegate:"))方法来判断是否有对象执行代理事件
    2》self.delegate!.firstDelegate("delegate")触发代理事件

    ④在代理的实现控制器中引入代理

    class ViewController: UIViewController,FirstViewControllerDelegate
    

    与 Object-C 不同,只需要“,”添加即可

    ⑤实现代理方法

        func firstDelegate(returnString: String) {
            print(returnString)
        }
    

    不知道是不是我的打开方式有问题~在 swift 里边,好多 Object-C 里边的智能补全,在这儿都不管用了自己慢慢打吧

    好吧,我也是个 swift 小萌新,如果各位亲友好的解决方法,请告知,在这儿提前谢过了
    分享一个我学习 swift 的网站,里面包含了swift里边的一些基础知识,有需要的可以看看

    swift 学习资料

    相关文章

      网友评论

          本文标题:Swift代理方法的使用

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