大家好,我是编程小6,很高兴遇见你,有问题可以及时留言哦。
回顾即开始
.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 网络库
Moya 基于Alamofire 封装的网络抽象层
Reachability.swift 用于网络状况检查
R.swift 自动将各种资源强类型化
SwiftDate/DateTool 时间日期处理库
RxSwift 响应式编程框架 by ReactiveX.io
LayoutKit 高性能视图布局库
Kingfisher 轻量级图片下载缓存库
NSLogger 便捷日志工具
Willow 轻量级日志工具 教程
FLEX/DoraemonKit 应用内 Debug 工具库
struct
+ Codable
Apple 文档let fooViewController = FooViewController(withViewModel: fooViewModel)
func fetchGigs(for artist: Artist) -> Observable<[Gig]> {
// ...
}
.pdf
矢量图API Design Guidelines for Swift
LinkedIn's Official Swift Style Guide
//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