Tagged Pointer
Tagged Pointer 是 Apple 为了优化内存使用和性能而在 Objective-C 中引入的一种特殊技术。在 64 位系统下,Tagged Pointer 用于优化对小对象(如 NSNumber、NSDate 和 NSString 等)的存储。
Tagged Pointer 通过将数据和指针合并,来减少存储空间的浪费。Tagged Pointer 本身不再是一个真正的指针,而是一个特殊的整数值,其中一部分用于表示数据类型,另一部分用于存储实际的数据。
Tagged Pointer 不需要通过传统的 malloc 和 free 来进行内存的分配和释放,性能得到优化。
Tuist
Tuist 是一个开源的项目和 workspace 组织工具,它旨在简化 Xcode 项目的设置和管理工作。Tuist 提供了一个声明式的领域特定语言(DSL),让开发者能够以更简洁和可维护的方式来描述 Xcode 项目的结构和配置。 CocoaPods 主要关注依赖管理,而 Tuist 关注的是整个 Xcode 项目的管理和自动化。
Tuist 的 Project.swift 示例如下:
import ProjectDescription
let project = Project(
name: "Tuist",
targets: [
Target(
name: "Tuist",
platform: .iOS,
product: .app,
bundleId: "io.tuist.Tuist",
sources: ["Sources/**"]
),
Target(
name: "TuistTests",
platform: .iOS,
product: .unitTests,
bundleId: "io.tuist.TuistTests",
sources: ["Tests/**"],
dependencies: [.target(name: "Tuist")]
)
]
)
图片格式
移动端常用的图片格式主要包括 JPEG、PNG、WebP 和 GIF。
- JPEG(Joint Photographic Experts Group)JPEG 是一种广泛使用的图片格式,使用有损压缩,不适合包含文本或透明度的图像
- PNG(Portable Network Graphics)PNG 是一种无损压缩的图片格式,适合存储包含文本或透明度的图像,适合网页设计、图标和其他需要清晰度和透明度的图像
- WebP,由 Google 开发,它结合了 JPEG 和 PNG 的优点,提供了有损和无损压缩选项。文件通常比 JPEG 和 PNG 文件消息,同时保持良好的图像质量,而且支持透明度和动画。然而,WebP 的兼容性不如 JPEG 和 PNG
- GIF(Graphics Interchange Format)GIF 是一种较旧的图片格式,通常用于动画和简单图像。使用无损压缩,但只能支持最多256种颜色
大文件上传
大文件上传是一个复杂的问题,涉及多个技术点,以下是一些主要的技术考虑:
前端技术
- 分片上传:将大文件分割成多个小块(分片),然后逐个上传
- 断点续传:在上传过程中如果失败,可以从上次中断的地方继续上传
- 并发控制:控制同时上传的分片数量,以优化上传速度和服务器压力
后端技术
- 临时存储:上传的分片通常先存储在临时位置
- 校验:对每个分片进行校验,确保上传的数据完整无误
- 合并:所有分片上传完成后,服务器端将它们合并成一个完整的文件