iOS基础-专栏总目录(持续更新)
文章目录
-
引言部分
-
I、 发布指南
-
1.1 iOS平台核心知识库
- 1.2 发布操作要点解析
- 1.3 iOS应用被拒应对策略集合
- 1.4 系统架构适配方案探讨
-
II、 开发基础知识
-
III、渲染
-
- 3.1 动画
- 3.2 文字/图像处理
-
- 3.2.1 Quartz2D使用指南
-
-
IV. 数据存储网络与数据提交
- 数据存储方案
- 数据检索机制
- http和https以及dns协议在数据提交过程中发挥重要作用。
- 处理get和Post&BOL参数的逻辑设计
-
V- 需求案例: 包括注册与登录的基础模块
-
第五章 支付产品相关技术基础
-
第五章第一节 对于支付产品基础知识的内容
- 第五章第二节 登陆功能模块的实现方案
- 第五章第三节 用户注册功能的具体设计
- 第五章第三节一节 关于用户协议及隐私政策的相关弹窗设计
- 第五章第三节 用户注册功能的具体设计
- 第五章第二节 登陆功能模块的实现方案
-
5.4 处理用户输入内容
-
5.5 地理信息处理
-
-
VI、 内存
-
- 6.1 进程
-
- 6.1.1 Extension的应用例子:语言播报
-
VII、质量(code review 、性能)
-
-
7.1 测试
-
- 7.1.1 技巧
- 7.1.2 AB 测试流量切换方案
- 7.1.3 iOS测试指南
-
7.2 安全
-
7.3 性能优化
-
7.4 监控系统
-
-
VIII、 效率
-
see also
-
- 技术分布
-
引言
欢迎大家来到#公众号:iOS逆向的《iOS基础》专栏
本文为学习指南,在阅读时可直接参考《iOS基础》专栏作为学习入口。
文章中的蓝色部分均为点击即可跳转到的内容,请根据需要选择相关资源进行深入研究。
本专栏侧重于 iOS 开发的基础知识和技能以及产品需求案例:
- 基础内容:
app上架指南、语言、框架、内存、网络、存储、渲染、线程 - 产品需求案例:
- 常规的数据显示案例包括网络拉取数据→存储→读取→展示的过程;
- 开发中的代理商CRM应用(即代理商CRM app)和商户收银应用;
- 计划涵盖以下各项:浏览器内核、文字排版引擎、音视频及图像处理引擎以及图标绘制引擎。
- 质量
1、测试/调试技巧(测试保证质量是一个很重要的环节):黑盒测试、单元测试、自动化测试
2、性能优化:网络/存储/内存/渲染/算法优化
3、监控体系:卡顿监控、数据库监控、流量消耗监控、内存消耗监控、耗时监控(问题响应)
4、代码管理:代码规范/代码规范检测工具、code review 机制(互相监督,减少脏乱差代码)
5、应用安全:敏感信息的脱敏规范、网络传输的安全、敏感信息安全(用户名/密码)、代码混淆【iOS应用逆向与安全模块请移步到
《iOS逆向》专栏学习】
I、 上架指南
1.1 iOS上架干货汇总
ios应用上架前的准备工作包括熟悉相关操作流程以及掌握特定的技术要点。其中一项关键技巧在于,在不更新版本的情况下如何删除App Store中的非主语言版本文件。常见的上架问题及其应对方案包括:ipad文件被恶意截取导致的数据丢失风险;以及已发布的应用在App Store中无法搜索到的情况。此外,在应用正式上线后还需要处理ASO优化工作以提升搜索引擎排名和用户体验
Xcode Build版本号自增的解决方案
解决Xcode Build版本号自增问题
codesign
codesign
codesign
1.2 上架相关操作技巧
AppStore 上架相关技巧
1.3 iOS被拒绝的解决方案汇总
iOS被拒绝的解决方案汇总:首先由于蓝牙功能较为隐晦而导致应用上架;其次,在应用审核过程中发现该版本存在安全问题而被拒绝。
1.4 系统框架(API)适配
系统适配
系统适配
系统适配
II、 开发基础知识
基础模块
涉及框架:StoreKit / MessageUI / AVFoundation/Foundation/UIKit
III、渲染
3.1 动画
定点缩放弹窗


横向(水平方向)弹出菜单视图
横向(水平方向)下拉菜单视图
横向(水平方向)弹出菜单视图

3.2 文字/图像处理
- 渲染机制
图层混合,渲染时机,离屏渲染
iOS设备上的图片拼接与延展效果、呈现效果的方式以及采用等比缩放技术实现的内容格式
3.2.1 Quartz2D使用指南
本博客文章将为您全面解析Quartz 2D框架的核心功能及其在实际开发中的应用场景。我们将深入探讨如何通过构建基于Quartz 2D的定制化组件来实现高效的图形界面开发,并重点讲解数字签名技术的应用场景与操作流程。此外本文还将详细分析图像水印技术在保护多媒体内容版权方面的实用价值,并结合实例展示如何利用软件提供的灵活裁剪功能和便捷屏幕抓图工具提升工作效率
本教程深入讲解了QuartZ2D技术体系的核心概念及其在实际开发中的应用场景,并着重展示了如何基于该框架实现个性化的控件设计。在本节中,我们将重点围绕横屏状态下常见的电子签名功能需求展开详细阐述,并结合完整的技术方案展示定制化组件的具体实现细节。通过本次学习,读者将掌握QuartZ2D框架在图形界面开发中的强大能力,并能够灵活运用这些知识解决实际项目中的复杂需求。需要注意的是,在设计横屏电子签名相关控件时,应充分考虑用户体验与性能优化之间的平衡关系
IV、 网络与数据存储
app从拉取数据到显示的大致流程:
通过网络获取数据
将获取的数据保存至本地存储
将本地数据导入内存并生成最终呈现内容。
从流程就可以看出本模块讲解的内容大纲如下:
- 数据存储机制
- https 协议的工作原理是什么?它依赖于哪些关键组件?
- 在DNS中绕过缓存(劫持)的重试流程如何工作?
- 在弱网络环境下如何提升连接质量?离线状态下如何优化客户端与服务器之间的通信协议?
- 客户端与服务器之间的通信协议有哪些类型?
数据结构json /protobuf、数据的增量更新
- 线程
这些处理全部集中在操作系统的进程和线程层面进行管理,这直接导致了对线程相关知识掌握的必要性变得愈发明显。
4.1 数据存储
- 数据库基础概念中涉及主键索引与事务的相关操作
- 数据存储方案及其索引实现 / sqlite系统的七层架构
- 基于单文件存储模式的数据组织方法
XML存文件;对象序列化成二进制存储
iOS 应用如何通过 BGFMDB 将数据本地化存储?在商户首次登录该应用时需完成协议同意流程,在此过程中系统会自动将数据发送至本地数据库进行存储管理。为了确保数据安全性和合规性要求,在线交易过程中的关键操作都会被实时记录并保存于本地数据库中。
iOS 使用数据库表存储信息
iOS 使用数据库表存储信息
iOS应用在数据存储机制中采用表结构来组织信息
4.2 数据搜索
- iOS数据搜索技巧:1、通过NSPredicate实现数据筛选:获取符合条件的数据元素(特别注意从数组中提取type=8的电子签名数据,并避免遍历certificateInfoList)2、正则表达式
4.3 http/https/dns(数据提交)
1.必须采用POST方法
2.配置请求头字段为 application/json,并指定 Content-Type 字段
具体操作如下:
将字符串 "application/json" 赋值给 request 的 Content-Type 字段
3.将 JSON 格式的数据作为 body字段发送出去
因不适合 MIME 类型而被拒绝的解决方案
基于AFNetworkSDK的应用/x-www-form-urlencoded数据提交方案
4.4 get 和PostBOOL参数进行处理
在使用AFN与NumberStation通信时,在传布尔型参数时需要注意区分GET和POST两种请求方式的处理方法
————————————————
版权声明:本文为博主「#公众号:iOS逆向」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
V、需求案例: 注册/登陆基础模块
5.1 支付产品的基础知识
支付流程
5.2 登陆模块
打开app,如果 token不过期,就使用最近一次登录的tokenn进行接口请求。
5.3 注册模块
5.3.1 《用户协议及隐私政策》弹框
iOS TextViewHyperLink 文字超链接:点击弹出页面中的《用户协议及隐私政策》页面弹窗

5.4 处理用户输入内容
中文占1,英文等能转ascii的占0.5
中文字符计分权重为1;而英文字符及可转换至ASCII字符的计分权重为0.5
索引
索引
从字符串中提取数字(手机号)
从字符串中提取数字(手机号)
从字符串中提取数字(手机号)
5.5 地理信息处理
该文详细介绍了如何利用iOS设备的位置定位技术结合地理/逆地理编码(geocodes)进行数据处理与分析,并具体阐述了如何评估目标位置坐标是否落在中国大陆范围内。
VI、 内存
- ARC 机制
OC 的引用计数 、自动释放池、Java语言的垃圾回收机制
- 内存管理
避免内存泄露
- 缓存管理
避免内存溢出问题的同时确保缓存命中率足够高以维持良好性能。
当发生OutOfMemoryError时, 错误信息为'内存用完了'。
具体原因在于内存不足导致无法分配新对象.
数学公式:Out Of Memory:OOME:"内存用完了". 它来源于java.lang.OutOfMemoryError.
- 线程和进程
开发中,在进行Extension操作时需特别关注进程管理。具体而言,在iOS应用开发中会遇到主线程与子线程的协调运行问题。这些涉及多方面的技术要点:包括并发锁的竞争与解决、死锁的预防与处理机制、以及GCD( grand central dispatch)和Runloop的应用。
6.1 进程
6.1.1 Extension的应用例子:语言播报
- NotificationServiceExtension
app处于后台/被杀死的状态仍可进行语言播报
确保应用即使在后台运行或被强行终止后仍能执行语言播报功能
VII、质量(code review 、性能)
7.1 测试
7.1.1 技巧
iOS测试用例:验证位置信息变更功能;具体操作为:利用GPX文件更新坐标数据;该过程基于模拟 iOS 设备定位机制进行。
7.1.2 AB 测试流量切换方案
7.1.3 iOS测试指南
保存接口返回的数据为json,以便作为测试数据
7.2 安全
iOS应用逆向与安全模块请移步到《iOS逆向》专栏学习
iOS 应用逆向分析及安全防护模块,请访问《iOS 逆向》专栏学习相关内容。
敏感信息的脱敏规范
敏感信息的脱敏规范
敏感信息的脱敏处理规范
敏感信息的脱敏处理规范
7.3 性能优化
1、收集多维度数据并对运行性能进行评估,
2、通过分析检测到的数据来识别性能瓶颈
3、探索可能的优化方案,并利用监控数据来验证这些方案的效果。
7.4 监控系统
电池的状态处理:电池状态获取及监测、电池电量获取及监测、低电量模式切换监测
电池状态管理:包含电池状态采集与监控、电池电量测量与评估以及低电切换监控
VIII、 效率
效率教程模块归入《iOS进阶》专栏链接中
see also
- 客户端开发
主要是指iOS/Android,也包括macOS/Windows/Linux这些平台的软件开发
前端开发
使用vue/react这些来源于浏览器技术
- Native开发
是指一种'非浏览器技术'的开发方法,在这种技术中不会使用JavaScript进行编程。
通常在Native开发中使用的编程语言属于编译型而非解释型。
例如,在iOS和macOS系统中会分别采用Objective C和Swift这两种语言进行开发;而Android系统则会根据具体情况选择Java或Kotlin这两种语言;Windows系统主要采用C#来进行软件开发;Linux系统则会选择C++作为编程语言(需要注意的是C++可以在多个平台上应用)。
Flutter则采用了Dart作为一种跨平台框架进行开发。
技术分布
- 完全小程序实现
这些应用一般是业务为主,连接线下的应用
- ReactNative或者Flutter实现为主,少量Native代码为辅助。
中小型企业开发的以B端为主的业务应用数量较多。
为减少开发人力资源需求,在功能实现上主要采用跨平台技术进行整合。
- 自定义DSL框架。
通过XML或JSON描述界面,并利用Native代码自动生成对应的界面组件。
这些系统大多属于大型应用范畴,并以Feed流作为核心功能架构。
dsl框架则被用来实现基于"内容驱动"的应用模块开发。
例如美团首页、微博首页(在刷微博时经常看到的广告链接)以及支付宝首页等。
Feed流中的内容非常丰富多样,
公司内部还会开发专门运营平台,
以便方便地配置下发不同类型的媒体内容。
美团曾发布过关于MTFlexbox的文章,
但并未开放源代码,
而阿里推出的Tangram框架则是开源方案。
- 更高级的DSL框架。
Droji's Chameleon is one example of a dynamic framework, alongside the latest Kraken open-source project by Alibaba. These frameworks leverage front-end technologies to create adaptable codebases capable of flexible adaptation across various platforms.
- Native为主,其他技术为辅助。
核心业务模块对性能有更高的要求, 必须依靠Native技术进行开发. 如微信生态中的小程序. 购物车等核心功能.
这些典型应用的核心模块多采用Native开发, 跨端技术. 小程序. 自定义DSL框架在不同场景中展现出各自的特色和优势.
许多专注于特定领域的小众应用往往能融合创新特性, 在一定程度上依赖平台特有的功能.
更多iOS技术文章,请关注 “iOS逆向” 公众号,一起学习,一起进步。

