美文网首页
7_private和fileprivate

7_private和fileprivate

作者: rebeccaBull | 来源:发表于2017-07-07 18:07 被阅读0次

    使用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是真正的私有,离开了这个类或者结构体的作用域外面就无法访问

    相关文章

      网友评论

          本文标题:7_private和fileprivate

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