iOS基础专栏- 总目录(持续更新)

文章目录

  • 引言
  • I、 上架指南
  • II、 开发基础知识
    • 2.0 iOS语言基础
      • 2.0.1 Objective-C
        • 2.0.1.1 对象模型
        • 2.0.1.2 动态特性(runtime)
      • 2.0.2 swift
    • 2.1 调试
    • 2.2 系统框架(API)适配
      • iOS14适配
      • iOS13适配
      • iOS12适配
    • 2.3 UI基础
      • 2.3.1 系统控件的基本使用及常见问题的解决方案
    • 2.4 UI进阶
      • 2.4.1 自定义MVVM视图
  • III、需求案例: 注册/登陆基础模块
    • 3.0 支付产品的基础知识
    • 3.1 登陆模块
    • 3.2 注册模块
      • 3.2.1 《用户协议及隐私政策》弹框
    • 3.2 处理用户输入内容
    • 3.3 地理信息处理
  • IV、 网络与数据存储
    • 4.1 数据存储
    • 4.2 http/https/dns(数据提交)
  • V、渲染
    • 5.1 动画
    • 5.2 文字/图像处理
  • VI、 内存
    • 4.1 进程
      • 4.1.1 Extension的应用例子:语言播报
  • VII、质量(code review 、性能)
    • 8.1 测试技巧
    • 8.2 安全
    • 8.3 性能优化
    • 8.4 监控系统
  • IX 效率
  • see also

引言

欢迎大家来到#公众号:iOS逆向的《iOS基础》专栏

本文列出学习大纲,同时也可作为大家学习《iOS基础》专栏的索引。
文中的蓝字都是传送门,点击进入即可

本专栏侧重于程序开发和 iOS 开发的基础知识和技能以及产品需求案例,当然也会包括提高项目质量和提升开发效率模块。

  • 基础涉及内容:app上架指南、语言、框架、内存、网络、存储、渲染、线程
  • 产品需求案例:

1、普通的数据显示案例,即网络拉数据->存储->读取->展示;
2、代理商CRM app、商户收银app
3、计划涉及的案例:浏览器内核,文字排版引擎,音视频和图像处理引擎,图标绘制引擎

  • 质量

1、测试/调试技巧(测试保证质量是一个很重要的环节):黑盒测试、单元测试、自动化测试
2、性能优化:网络/存储/内存/渲染/算法优化
3、监控体系:卡顿监控、数据库监控、流量消耗监控、内存消耗监控、耗时监控(问题响应)
4、代码管理:代码规范/代码规范检测工具、code review 机制(互相监督,减少脏乱差代码)
5、应用安全:敏感信息的脱敏规范、网络传输的安全、敏感信息安全(用户名/密码)、代码混淆【iOS应用逆向与安全模块请移步到《iOS逆向》专栏学习】

I、 上架指南

  • iOS上架前的准备、上架技巧(不更新版本的情况下删除App Store非主语言的方法)、常见上架问题及解决方案(上传ipa包被吃掉、已上架app在AppStore搜不到)、app上架后的事项(ASO)

【AppStore 上架相关技巧】1、由于AppStore缓存原因,导致已上架iOS app(可供销售)在AppStore上搜不到的解决方案2、不更新版本的情况下删除App Store非主语言的方法(应用场景:马甲包)

  • iOS代码管理之【Xcode Build版本号自增的解决方案】(通过配置脚本让xcode 在每次Build打包时自动对CFBundleVersion加一)

  • 【codesign】1、重签名2、搜索本机的证书、查看签名证书、3、打包脚本

II、 开发基础知识

  • 涉及框架

StoreKit / MessageUI / AVFoundation/Foundation/UIKit

2.0 iOS语言基础

2.0.1 Objective-C

2.0.1.1 对象模型

2.0.1.2 动态特性(runtime)

2.0.2 swift

2.1 调试

  • Basic debugging using logging for iOS apps

2.2 系统框架(API)适配

iOS14适配

  • iOS14适配汇总:【1、隐私权限相关:定位、相册、IDFA 2、KVC相关:不允许访问 UIPageControl的pageImage3、UIView相关适配:UITableViewCell兼容4、网络相关】

iOS14 开启 encrypted DNS 提高安全性,防止DNS 劫持

  • iOS14适配【 读取用户剪切板数据会弹出提示】1、 查找哪些SDK使用了剪切板,及时升级SDK2、先判断剪切板内容的各式,如果符合规则才读取剪切板

iOS13适配

  • iOS13适配汇总:1、present半屏问题2、禁止 KVC访问UI控件私有API 3、 暗色模式开发规范、4、设置状态栏背景颜色的方案:使用statusBarManager 5、不使用场景的方案

iOS12适配

  • iOS12.1以上在后台或者被杀死无法语音播报的解决方案

使用 NotificationServiceExtension实现VoiceBroadcast
【app处于后台/被杀死的状态仍可进行语言播报】

2.3 UI基础

2.3.1 系统控件的基本使用及常见问题的解决方案

【 调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界/titleView 的间距】 及常见问题的解决方案(BarButtonItem 隐藏失效)

2.4 UI进阶

2.4.1 自定义MVVM视图

  • ProductspecificationsTree 自定义cell 采用MVVM实现:【选择多级商品规格信息(树形,多选)】应用场景: 发布商品-添加多规格信息

iOS基础专栏- 总目录(持续更新)_第1张图片

  • iOS自定义单选框【例子:选择购买发票套餐】

iOS基础专栏- 总目录(持续更新)_第2张图片

  • iOS 自定义文本输入框弹框视图(例子:【调整价格、调整库存】)

iOS基础专栏- 总目录(持续更新)_第3张图片

  • iOS AddressPickerView 地址选择器:(支持省份,省市,省市区三种联动)也支持打开显示上一次选择的地址【回调参数包括选中的省(provinceId)、市ID(cityId)区ID】
    iOS基础专栏- 总目录(持续更新)_第4张图片
  • iOS 自定义视图:【阅读并同意注册协议】

iOS基础专栏- 总目录(持续更新)_第5张图片

  • iOS【 列表底部操作按钮视图的封装】(例子: 门店商品列表底部操作按钮视图: 发布商品、批量下/上架、同步网店、打印价签)

在这里插入图片描述

  • ios 自定义编辑退款金额视图:支持是否全选(isbouncingSelectAll),限定个数( titleMaxCount ),以及自定义输入规则(ShouldChangeCharacblock)

iOS基础专栏- 总目录(持续更新)_第6张图片

  • iOS全/反选功能的自定义视图 【 应用场景:批量修改规格信息的条码、零售价、成本价、库存】采用MVVM
    iOS基础专栏- 总目录(持续更新)_第7张图片

III、需求案例: 注册/登陆基础模块

3.0 支付产品的基础知识

  • i1、支付知识及调试测试技巧:【支付流程 & 预授权& 银行卡验证&反洗钱】2、安全设计Checklist(短信验证码、图形验证码、密码管理、身份验证、会话安全、敏感信息、接口安全)

3.1 登陆模块

  • iOS 优化登录流程:【打开app,如果 token不过期,就使用最近一次登录的tokenn进行接口请求。】优化token的存储方式:(之前只是存储在内存,每次打开app都会重新登录,)

3.2 注册模块

3.2.1 《用户协议及隐私政策》弹框

  • iOS TextViewHyperLink 文字超链接: 《用户协议及隐私政策》弹框

iOS基础专栏- 总目录(持续更新)_第8张图片

3.2 处理用户输入内容

  • iOS文本长度计算【中文占1,英文等能转ascii的占0.5】常常应用于对文本输入框的个数限制

  • iOS处理语言的强大工具CFStringTransform : 智能地处理用户的输入内容,经典应用场景【索引】

  • iOS用户输入处理之【从字符串中提取数字(手机号)】应用场景:登录界面“请输入手机号“文本框,对粘贴内容进行手机号码提取

  • iOS金额的格式转化处理

3.3 地理信息处理

  • iOS定位、地理/逆地理编码geocodes的使用、判断目标经纬度是否在大陆

IV、 网络与数据存储

app从拉取数据到显示的大致流程:

从网络拉取数据
存储到本地文件系统
再从本地取出来放进内存,最后渲染出来。

从流程就可以看出本模块讲解的内容大纲如下:

  • 数据存储
  • https 的原理
  • dns 劫持(重试机制)
  • 优化弱网络下的连接(离线机制)
  • 客户端跟后台的通信协议

数据结构json /protobuf、数据的增量更新

  • 线程

这里所有的处理都在操作系统的进程和线程中执行,因此了解线程相关知识是必不可少的

4.1 数据存储

  • 主键索引事务等数据库基本概念
  • 存储机制/索引的实现/sqlite的七层结构
  • 单文件存储

XML存文件;对象序列化成二进制存储

  • iOS app 使用BGFMDB存储信息到本地数据库教程【应用场景:商户首次登陆app同意协议流程,记录当前商户已经同意过协议信息】

  • 【iOS 使用数据库表存储信息】例子: 存储显示过广告弹窗的用户ID, 应用场景:首次打开app进行广告弹窗

  • PL/SQL基础

4.2 http/https/dns(数据提交)

  • iOS 实现json数据提交(发送JSON数据给服务器)

1.一定要使用POST请求
2.设置请求头 [request setValue:@“application/json” forHTTPHeaderField:@“Content-Type”];
3.设置JSON数据为请求体

  • iOS接收json格式【 unacceptable content-type: text/plain的解决方案】
  • iOS实现key=value&key=value形式的数据提交【Post 提交请求数据格式为application/x-www-form-urlencoded的方案】(基于AFNetworkSDK)

V、渲染

5.1 动画

  • iOS常用动画 【 定点缩放弹窗】利用锚点anchorPoint进行实现

在这里插入图片描述

在这里插入图片描述

  • iOS Horizontal Popup View 【 横向(水平方向)弹出菜单视图】例子:商品列表支持弹出菜单进行下/上架商品、打印商品价签、编辑商品信息、同步网店等操作popover

在这里插入图片描述

5.2 文字/图像处理

  • 渲染机制

图层混合,渲染时机,离屏渲染

VI、 内存

  • ARC 机制

OC 的引用计数 、自动释放池、Java语言的垃圾回收机制

  • 内存管理

避免内存泄露

  • 缓存管理

避免缓存太多导致OOM、缓存命中率太低性能低下
Out Of Memory:“内存用完了”。 它来源于java.lang.OutOfMemoryError。

  • 线程和进程

iOS 开发只在做 Extension 时才需要考虑到进程,
主线程子线程,多线程并发锁竞争,死锁,GCD,Runloop

4.1 进程

4.1.1 Extension的应用例子:语言播报

  • NotificationServiceExtension

使用 NotificationServiceExtension实现VoiceBroadcast
【app处于后台/被杀死的状态仍可进行语言播报】
iOS12.1以上在后台或者被杀死无法语音播报的解决方案

VII、质量(code review 、性能)

8.1 测试技巧

  • iOS测试位置信息变更:通过GPX文件修改经纬度信息(模拟iOS设备的位置)

8.2 安全

【iOS应用逆向与安全模块请移步到《iOS逆向》专栏学习】

【敏感信息的脱敏规范】(数据类型包括日志相关、账户订单、个人信息、账户认证、持卡数据)

8.3 性能优化

1、 检测各方面的数据,量化运行性能,
2、从检测数据寻找性能瓶颈
3、找解决方案并用监测的数据验证优化效果

8.4 监控系统

【电池的状态处理:电池状态获取及监测、电池电量获取及监测、低电量模式切换监测】

IX 效率

效率教程模块放在了 《iOS进阶》专栏

see also

  • 本博客精品文章汇总(持续更新)

腾讯云+社区专栏:https://cloud.tencent.com/developer/column/90774

更多iOS技术文章,请关注 “iOS逆向” 公众号,一起学习,一起进步。

在这里插入图片描述
在这里插入图片描述

你可能感兴趣的:(#,iOS开发基础,iOS基础模块)