如果我有一个类Christmas和一个协议Merry,为了使Christmas符合Merry,许多人会这样做:
class Christmas {
...
}
extension Christmas: Merry {
...
}
Run Code Online (Sandbox Code Playgroud)
它也受到Apple的鼓励.
但是,在定义类时,让类符合协议是不是更方便?像这样:
class Christmas: Merry {
...
}
Run Code Online (Sandbox Code Playgroud)
两种方法有什么区别?
它们是不同的编码风格.第一个选择
class Christmas {
...
}
extension Christmas: Merry {
...
}
Run Code Online (Sandbox Code Playgroud)
当你看全班时更清洁.您可以立即看到该类符合的所有协议实现.
使用第二个选项,您将协议的实现放在类中,并将其与类方法混合.但是,如果你使用
//MARK: -
Run Code Online (Sandbox Code Playgroud)
与使用扩展时相比,代码变得不那么干净了.例如:
protocol Merry: class {
func celebrate()
}
class Cristmas: NSObject, Merry {
private var santa: AnyObject?
//MARK: - Private Methods
private func callSanta() {
//calling Santa
}
//MARK: - Merry Implementation
func celebrate() {
//celebration starts here
}
}
Run Code Online (Sandbox Code Playgroud)
两个选项的功能是相同的.
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |