美文网首页
swift可选协议

swift可选协议

作者: flyrr | 来源:发表于2016-08-18 13:33 被阅读945次

swift是面向协议编程的。。。但是我在这实现的过程中,有一个过不去的坎---那就是,OC里面有可选协议,但是swift的是明确,协议是必须实现的。这个百度了一下,出现了很多,但是答案就是用@objc链接到OC。。。然后在使用可选协议,但是这个做法不简洁,不像swift。。。
然后我自己琢磨了协议以及extension,实现了swift的可选协议。
那就是我们定义一个协议,把必须实现的协议直接写在协议本体里面,然后可选协议写在协议的extension里面。
看代码:

/**
 *  导航栏协议
 */
protocol NaviItemManager {}

extension NaviItemManager where Self: UIViewController {
    /**
     返回上一界面---默认pop
     */
    func disMissMenuItemManager() {
        let item = BlockMenuBarItem(image: UIImage.imageWithName(NaviItemImages.Back.rawValue, model: .AlwaysOriginal), style: .Done) {
            self.navigationController?.popViewControllerAnimated(true)
        }
        navigationItem.leftBarButtonItem = item
    }
    
    /**
     查看客服--默认
     */
    func checkKeFuItemManager() {
        let item = BlockMenuBarItem(image: UIImage.imageWithName(NaviItemImages.Kefu.rawValue, model: .AlwaysOriginal), style: .Done) {
            HCM_HomeRootViewModel().gotoWebView(WebType.Kefu, at: self)
        }
        navigationItem.rightBarButtonItem = item
    }
}

这个是我app里面的代码的一部分,这两个协议因为放在extension里面,所以他们都是可选的。
然后调用的时候,我们就不用全部都准守了。

extension CardController: NaviItemManager {
    private func setUpUI() {
       title = "身份证认证"
        disMissMenuItemManager()
    }
}

那么,假如说,有必须实现的协议的话就直接放在本体里面,不要写在协议的extension里面就行了

相关文章

  • swift 可选协议

    前言 swift 协议 swift可选协议 协议前添加 @objc ,把你想要改成的可选协议前添加 @objc ...

  • Swift 协议代理

    Swift 实现可选协议方法

  • swift3 笔记 可选协议 和 协议扩展

    Objective-C 可选协议 -> 非必须实现 使用 @optional 关键字 Swift 可选协议 第一种...

  • swift可选协议

    第一种方式(oc): 使用: 第二种方式(swift):参考:http://swifter.tips/objc-p...

  • swift 可选协议

    方法一 @objc @objc protocol ExampleProtocol { func method1(...

  • swift可选协议

    swift是面向协议编程的。。。但是我在这实现的过程中,有一个过不去的坎---那就是,OC里面有可选协议,但是sw...

  • 可选协议和协议扩展

    // 可选协议和协议扩展 // 原生的 Swift protocol里 没有可选项,所有定义的方法都是必须实现的。...

  • swift 协议方法可选

    swift 协议方法可选 让一个类去实现这个协议 可选协议我们可以不用去实现,但是可以直接去调用testOptio...

  • 每天学一点Swift----面向对象下(八)

    十五.可选协议 1. Swift还支持在协议中定义定义可选成员要求(包括属性、方法、下标,不包括构造器)----是...

  • Swift Protocol 注意点

    Swift Protocol 想要实现可选协议,必须在协议前加@objc 协议的参数如果不是Object的子类?那...

网友评论

      本文标题:swift可选协议

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