美文网首页
Swift 小笔记 | 使用 @discardableResul

Swift 小笔记 | 使用 @discardableResul

作者: Lol刀妹 | 来源:发表于2019-11-01 18:30 被阅读0次

    场景

    我封装了一个占位图:

    /// 在指定view上展示占位图,默认覆盖整个view,如需调整约束可以对返回值进行修改
    /// - Parameter view: 展示占位图的view
    /// - Parameter type: 占位图类型
    /// - Parameter title: title
    /// - Parameter tapedColsure: 占位图点击回调
    class func show(on view: UIView, type: PlaceholderViewType!, title: String!, tapedColsure: ViewTapedClosure) -> PlaceholderView {
        // 先移除已有的
        remove(from: view)
    
        let placeholderView = PlaceholderView(type: type, title: title, tapedColsure: tapedColsure)
        view.addSubview(placeholderView)
        placeholderView.snp.makeConstraints { (make) in
            make.top.left.width.height.equalToSuperview()
        }
    
        return placeholderView
    }
    

    占位图默认覆盖整个view,但有些情况下要求不覆盖整个view,因此我给这个show方法提供了一个返回值,需要的时候可以任意调整,如:

    let placeholderView = PlaceholderView.show(on: self.view, type: .loadFailed, title: "网络不给力") {
        self.loadData()
    }
    placeholderView.snp.remakeConstraints { (make) in
        make.left.right.equalToSuperview()
        make.top.bottom.equalTo(self.raffleListView)
    }
    

    但是大部分时候都是不需要的,不需要对占位图进行任何调整,如:

    PlaceholderView.show(on: tableView, type: .noData, title: "无数据") {
        print("点击占位图")
    }
    

    这个时候 Xcode 就会给个⚠️:

    Result of call to 'show(on:type:title:tapedColsure:)' is unused
    

    一种方式是使用 let _ 忽略返回值:

    let _ = PlaceholderView.show(on: tableView, type: .noData, title: "无数据") {
        print("点击占位图")
    }
    

    但是更优雅的方式是直接在定义函数的地方加上 @discardableResult 忽略返回值:

    @discardableResult
    class func show(on view: UIView, type: PlaceholderViewType!, title: String!, tapedColsure: ViewTapedClosure) -> PlaceholderView {
        // ...
    }
    

    这样在调用函数的时候即使不加上 let _ 也不会出现⚠️了:

    PlaceholderView.show(on: tableView, type: .noData, title: "无数据") {
        print("点击占位图")
    }
    

    相关文章

      网友评论

          本文标题:Swift 小笔记 | 使用 @discardableResul

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