美文网首页ios开发学习
swift extension添加方法的两种方式

swift extension添加方法的两种方式

作者: flionel | 来源:发表于2018-05-28 19:47 被阅读15次

swift的extension很好用,可以为现有的类、结构体、枚举添加方法,也可以结合协议扩展来添加方法,如下代码所示,

1. 常见的添加方式

import UIKit

extension UIView {
    static func loadFromNib(nibName: String) -> UIView? {
        let view = Bundle.main.loadNibNamed(nibName, owner: nil, options: nil)?.first as! UIView
        return view
    }
}

2. 通过协议扩展的方式

 protocol Nibloadable {}
 extension Nibloadable where Self: UIView {
    static func loadFromNib(nibName: String?) -> Self {
 return Bundle.main.loadNibNamed(nibName ?? "\(self)", owner: nil, options: nil)?.first as! Self
    }
 }
 

3. 两种方式对比

第一种方式,是为所有的UIView及其子类都添加loadFromNib(nibName) -> UIView方法,这在开发过程中会引起一些歧义,因为Xcode自动补全的功能,其他的调用者会看到这样一个额外的方法,这可能会让调用者赶到疑惑。

第二种方式,是通过协议扩展的方式,并且该一些还通过类型约束的方式,限制了只有UIView的子类才能实现该协议。

所以笔者更加推荐第二种方式。

相关文章

网友评论

    本文标题:swift extension添加方法的两种方式

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