美文网首页
swift3 笔记 可选协议 和 协议扩展

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

作者: 文瑶906 | 来源:发表于2017-06-29 16:52 被阅读0次

Objective-C

可选协议 -> 非必须实现
  • 使用 @optional 关键字

Swift

可选协议
  • 第一种
    • 在 protocol 定义的前面和协议方法的前面加上 @objc。
@objc protocol OptionalProtocol {
            @objc optional func optionalMethod()
}

@objc protocol OptionalProtocol {
    @objc optional func optionalMethod()  // 可选
    func necessaryMethod()          // 必须
    @objc optional func anotherOptionalMethod() // 可选
}

使用 @objc 修饰 会出现的问题:

  • 此 protocol 只能被 class实现
  • struct 和 enum 类型 ,不能实现 协议中 含有的可选方法或者属性
  • class中的方法也必须被标注为 @objc,或整个类就是继承自 NSObject.

在 Swift 2.0 中,出现了第二种方法

protocol extension

  • 在声明一个 protocol 之后 , 在 用 extension 的方式 给 部分方法默认的实现。
  • 这样 这些方法在实际的类中就是可选实现的了。
protocol OptionalProtocol {
    func optionalMethod()        // 可选
    func necessaryMethod()       // 必须
    func anotherOptionalMethod() // 可选
}

extension OptionalProtocol {
    func optionalMethod() {
    print("Implemented in extension")
    }

    func anotherOptionalMethod() {
        print("Implemented in extension")
    }
}

class MyClass: OptionalProtocol {
    func necessaryMethod() {
        print("Implemented in Class3")
    }

    func optionalMethod() {
        print("Implemented in Class3")
    }
}

调用

let obj = MyClass()
obj.necessaryMethod() // Implemented in Class3
obj.optionalMethod()  // Implemented in Class3
obj.anotherOptionalMethod() // Implemented in extension

相关文章

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

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

  • [Swift Tips 读书笔记]从 Objective-C 到

    @objc 和 dynamic 可选协议和协议扩展 内存管理,weak 和 unowned @autoreleas...

  • 可选协议和协议扩展

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

  • Swift(2)

    可选类型(?) 隐式解析可选类型(!) 结构体 类 协议 扩展 闭包

  • 扩展协议实现方法可选

    import Foundation需求:希望把playBasketball()设计为可选,可以实现也可以不实现方案...

  • swift 可选协议

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

  • swift 4.0 协议 协议扩展

    协议 协议扩展

  • swift 扩展和协议的结合

    协议和扩展是可以结合使用的,可以通过扩展使已有的类型采纳某个协议,也可以对现有协议进行扩展。 一、通过扩展采纳协议...

  • POP-面向协议编程

    什么是面向协议编程? 面向协议 = 协议 + 扩展 + 继承通过协议、扩展做功能划分,降低模块间的耦合,增强代码的...

  • swift 协议方法可选

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

网友评论

      本文标题:swift3 笔记 可选协议 和 协议扩展

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