學習優秀開源項目BeautifulApp心得

一、目錄結構

  • 目錄結構分析
    • Controllers : 控制器文件
    • Views : View文件
    • Models : 模型文件
    • Extensions : 一些分類擴展
    • Constant : 常量
    • Other : 工具類和第三方庫
    • Resources : 資源文件
    • Services : API服務

Networking

網絡請求是采用Alamofire+Moya,只需要創建一個enum去實現MoyaTargetType協議,然后配置URLparameters等即可完成網絡請求。詳情可以看APIConstant.swift

Moya

創建一個service的類,負責網絡請求
相關文章 Moya用法
Moya網絡抽象層

SnapKit

參考文章 自動布局SnapKit的詳細使用

知識點

  • 使用fileprivate聲明屬性和方法,只能在本文件中被訪問,包括在extension className擴展文件中也能訪問;
    private聲明的方法和屬性只能在該類中訪問,不能再再擴展文件中訪問;
    internal(默認訪問級別,internal修飾符可寫可不寫);
    public可以被任何人訪問。但其他module中不可以被override和繼承,而在module內可以被override和繼承;
    open可以被任何人使用,包括override和繼承。
    從高到低排序如下:

open > public > interal > fileprivate > private

  • 空合運算符 ??
    a??b a是一個可選值,a不為nil 取a的值,a為nil 取b得值

  • 泛型運用

// MARK: - 擴展UITableView, 不用傳入identifier參數  identifier參數為類名
public extension UICollectionView {
    
    public func dequeueReusableCell<T: Reusable>(indexPath: IndexPath) -> T {
        return self.dequeueReusableCell(withReuseIdentifier: T.reuseIdentifier, for: indexPath) as! T
    }
    
    func registerClass<T: UICollectionViewCell>(_: T.Type) where T: Reusable {
        self.register(T.self, forCellWithReuseIdentifier: T.reuseIdentifier)
    }
}
public protocol Reusable: class {
    static var reuseIdentifier: String { get }
}

extension Reusable {
    static var reuseIdentifier : String {
        return String(describing: self)
    }
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,868評論 18 139
  • 因為要結局swift3.0中引用snapKit的問題,看到一篇介紹Xcode8,swift3變化的文章,覺得很詳細...
    uniapp閱讀 4,480評論 0 12
  • 136.泛型 泛型代碼讓你可以寫出靈活,可重用的函數和類型,它們可以使用任何類型,受你定義的需求的約束。你可以寫出...
    無灃閱讀 1,509評論 0 4
  • 大學剛畢業,大四已實習工作一年,現在仍在為生活所迫,目前在一家國企工作,工資很低,事情比較雜,但是我依舊有追求,我...
    瀟湘飛院閱讀 254評論 0 0
  • 社會實踐第一天晚上,小哥哥說,想看看你們住的地方怎么樣。 “想怎么看呀” “視頻呀” “不是想我了嗎?” “順便想...
    潔喵閱讀 108評論 0 0