回顾即开始html
.gitignore
: Swift or Objective-Csudo gem install cocoapods # 安装
pod init # 初始化建立 Podfile
pod install/update # 安装/更新依赖
复制代码
brew install carthage # 安装
carthage bootstrap/update # 安装或更新依赖
复制代码
AwesomeProject ├─ Assets │ ├─ Info.Plist │ ├─ Localizable.strings │ ├─ R.generated.swift # 可选,R.swift 生成 │ ├─ LaunchScreen.storyboard │ ├─ Assets.xcassets │ ├─ ProjectName.entitlements │ ├─ Info.Plist │ ├─ BuildConfigs │ └─ ··· ├─Sources │ ├─ Modules │ ├─ MyModule │ │ │ ├─ Models │ │ │ ├─ Views │ │ │ └─ Controllers (or ViewModels) │ │ └─ ··· │ ├─ Stores │ ├─ Helpers │ ├─ Utilities │ ├─ Extentsions │ ├─ Mediator │ ├─ Ventors │ └─ ··· ├─Tests └─ ··· 复制代码
// 全局常量建议采用 Enum 定义 enum Constants { static let myConstant = "Just a constant" } enum Apprearance { enum Sizes { static let gutter: CGFloat = 15 static let cardGutter: CGFloat = 8 ··· } enum Color { static let primaryColor = UIColor(red: 0.22, green: 0.58, blue: 0.29, alpha: 1.0) static let secondaryColor = UIColor.lightGray static let background = UIColor.white enum Red { // 可视化颜色 static let medium = #colorLiteral(red: 0.22, green: 0.58, blue: 0.29, alpha: 1.0) static let light = #colorLiteral(red: 0.22, green: 0.58, blue: 0.29, alpha: 1.0) } } } 复制代码
Alamofire 网络库react
Moya 基于Alamofire 封装的网络抽象层ios
Reachability.swift 用于网络情况检查git
R.swift 自动将各类资源强类型化github
RxSwift 响应式编程框架 by ReactiveX.io编程
LayoutKit 高性能视图布局库bootstrap
Kingfisher 轻量级图片下载缓存库swift
NSLogger 便捷日志工具api
FLEX/DoraemonKit 应用内 Debug 工具库
struct
+ Codable
Apple 文档let fooViewController = FooViewController(withViewModel: fooViewModel) 复制代码
func fetchGigs(for artist: Artist) -> Observable<[Gig]> { // ... } 复制代码
.pdf
矢量图 //MARK:
+ Extension
分组结构化代码
import SomeExternalFramework class FooViewController : UIViewController { let foo: Foo private let fooStringConstant = "FooConstant" private let floatConstant = 1234.5 // MARK: Lifecycle // Custom initializers go here ··· } // MARK: View Lifecycle extension FooViewController { override func viewDidLoad() { super.viewDidLoad() // ... } } // MARK: Layout extension FooViewController { private func makeViewConstraints() { // ... } } // MARK: User Interaction extension FooViewController { func foobarButtonTapped() { // ... } } // MARK: FoobarDelegate extension FooViewController: FoobarDelegate { func foobar(foobar: Foobar, didSomethingWithFoo foo: Foo) { // ... } } // MARK: Helpers extension FooViewController { private func displayNameForFoo(foo: Foo) { // ... } } 复制代码
UserDefault
或 CoreData
等非加密持久化方式KeyChain
加密储存敏感数据
https
TLS 加密传输UITextField
用于密码等敏感信息输入时设置secureTextEntry
为 true
applicationDidEnterBackground
Exception
断点欢迎指正共建与获取最新状态:Github 仓库 - iOS-Practice-Checklist