All Projects → Binlogo → Ios Practice Checklist

Binlogo / Ios Practice Checklist

iOS 精进与实践检查清单

Programming Languages

shell
77523 projects

Projects that are alternatives of or similar to Ios Practice Checklist

Rust android ios
Android / iOS app with shared Rust logic
Stars: ✭ 69 (-24.18%)
Mutual labels:  ios-app
Phphub Ios
PHPHub for iOS is the universal iPhone and iPad application for PHPHub
Stars: ✭ 1,223 (+1243.96%)
Mutual labels:  ios-app
Slidingtabbar
A custom TabBar view with sliding animation written in Swift.
Stars: ✭ 84 (-7.69%)
Mutual labels:  ios-app
Augmentedsolarsystem
An Augmented reality experience to explore planets in our Solar System
Stars: ✭ 69 (-24.18%)
Mutual labels:  ios-app
Ubersignature
Provides an iOS view controller allowing a user to draw their signature with their finger in a realistic style.
Stars: ✭ 1,213 (+1232.97%)
Mutual labels:  ios-app
Nnjanebookview
仿简书个人主页多页面滑动视图。
Stars: ✭ 80 (-12.09%)
Mutual labels:  ios-app
Booking Management Dashboard
flutter Booking Management Dashboard responsive (web,mobile,tablet)
Stars: ✭ 69 (-24.18%)
Mutual labels:  ios-app
Coremldemo
A simple demo for Core ML
Stars: ✭ 90 (-1.1%)
Mutual labels:  ios-app
Phimpme Ios
Phimp.me - Photo Image Editor and Sharing App. Phimp.me is a Photo App for iOS that aims to replace proprietary photo applications. It offers features such as taking photos, adding filters, editing images and uploading them to social networks.
Stars: ✭ 79 (-13.19%)
Mutual labels:  ios-app
Lbrnmeituan
ReactNative 仿美团项目
Stars: ✭ 84 (-7.69%)
Mutual labels:  ios-app
Ios Apps
Awesome iOS apps
Stars: ✭ 71 (-21.98%)
Mutual labels:  ios-app
My Ios
List of applications and tools that make my iOS experience even more amazing
Stars: ✭ 1,202 (+1220.88%)
Mutual labels:  ios-app
Dprogram ios
做的一款小项目-编程宝典iOS版
Stars: ✭ 80 (-12.09%)
Mutual labels:  ios-app
Fridpa
An automated wrapper script for patching iOS applications (IPA files) and work on non-jailbroken device
Stars: ✭ 69 (-24.18%)
Mutual labels:  ios-app
Pixpic
PixPic, a Photo Editing App
Stars: ✭ 1,261 (+1285.71%)
Mutual labels:  ios-app
Appmon
Documentation:
Stars: ✭ 1,157 (+1171.43%)
Mutual labels:  ios-app
Chatter App
This is a flutter based modern messaging app where users can sign up and log in to chat with their friends, family, colleagues among groups with enriched User-Experience.
Stars: ✭ 80 (-12.09%)
Mutual labels:  ios-app
Hardchoice
有时候作抉择真的很痛苦,Swift写的生活类APP
Stars: ✭ 90 (-1.1%)
Mutual labels:  ios-app
Thewarholoutloud
An inclusive audio guide for The Andy Warhol Museum
Stars: ✭ 89 (-2.2%)
Mutual labels:  ios-app
Calenstyle
Responsive Drag-&-Drop Event Calendar Library for Web, Mobile Sites, Android, iOS & Windows Phone
Stars: ✭ 83 (-8.79%)
Mutual labels:  ios-app

iOS 实践与精进检查清单

回顾即开始

目录

  1. 开始项目
  2. 实用公共库
  3. 架构
  4. 数据储存
  5. 资源
  6. 编码规范
  7. 安全性
  8. 诊断

开始项目

Xcode

.gitignore

依赖管理

sudo 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
│    ├─ 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)
        }
    }
}

实用公共库

架构

Model

Views

Controllers

let fooViewController = FooViewController(withViewModel: fooViewModel)

设计模式

数据储存

  • [ ] 避免"回调地狱"(callback hell)
  • [ ] RxSwift 异步响应式编程
func fetchGigs(for artist: Artist) -> Observable<[Gig]> {
    // ...
}

资源

  • [ ] 采用 .pdf 矢量图
  • [ ] R.swift 自动集中管理图片、xib、字符串等各项资源
  • [ ] ImageOptim 图片优化

编码规范

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) {
        // ...
    }

}

安全性

数据储存

网络

  • [ ] 采用 https TLS 加密传输

日志采集

  • [ ] 设置正确的日志输出等级
  • [ ] 线上环境一定不要打印密码等敏感信息
  • [ ] 记录基本代码控制流,以便调试

用户交互

  • [ ] UITextField 用于密码等敏感信息输入时设置secureTextEntrytrue

  • [ ] 必要时清空剪贴板等可能存在的敏感数据

    • [ ] applicationDidEnterBackground

诊断

  • [ ] 重视并尽量解决编译器警告

  • [ ] 静态分析

    • [ ] Product → Analyze
  • [ ] 调试

    • [ ] 开启 Exception 断点
    • [ ] Reveal 视图调试
  • [ ] 性能剖析

开发社区

借助社区的力量,并积极融入社区,贡献自己的力量

课程网站

博客

订阅

播客

开发者

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].