7_private和fileprivate

2017-07-07  本文已影响0人  rebeccaBull

使用Extension 代替oc中 #pragma,分割代码

配合 //MARK:

举例:
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
}

extension ViewController{

    override func viewDidLoad(){}
    override func viewWIllAppear(_ animated: Bool) {}
    override func viewWillLayoutSubviews(){}

}

//MARK: -setup初始化设置
extension ViewController{

  fileprivate func setup(){
    setupStyle()
    setupLayout()
  }

  private func setupStyle(){}
  private func setupLayout(){}

}

extension ViewController: UITableViewDataSource,UITableDelegate{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {}

}

MARK:在 Xcode分为两个层级,分别是 //MARK: - 和 //MARK:
加 - 会在代码概览多一条分隔线

常用介绍:
使用fileprivate 暴露内部接口 使用private 进行内部实现

extension ViewController{

// MARK: 接口
fileprivate func setup() {
setupStyle()
setupLayout()
setupTableView()
}

// MARK: Implementation 实现
private func setupStyle() {}

private func setupLayout() {}

private func setupTableView() {}

}

private 跟 extension 分割代码配合使用,通过 private 隐藏内部的实现,使用fileprivate 把接口暴露到了类内部

之前swift版本:

extension ViewController{

private func setup(){
    
    func setupTableView(){
        
    }
    
    func layout(){
        
    }
    
    setupTableView()
    layout()
    
}

}

========================================================
带来 两个问题:
在swift3中, 新增加 fileprivate显示表示,这个元素的访问权限为文件内私有,过去的private 对应现在的fileprivate ,
现在的private是真正的私有,离开了这个类或者结构体的作用域外面就无法访问

上一篇下一篇

猜你喜欢

热点阅读