WWDC20 10146 - App Clips 的配置及链接处理

视频链接: WWDC 2020 - Configure and link your app clips

本篇介绍了 App Clips 链接处理所需要知道的所有内容。 App Clips通过最简化的方式,为你的用户提供了一个体验应用程序的入口。当你的用户需要 App 的具体功能来处理某项操作时,App Clips 会通过 deep-linked 的方式无缝将 App 的具体模块呈现给用户。本篇会介绍 App Clip 内链接的处理和配置链接所需的操作。

iOS 内存相关梳理

iOS 的内核是 XNU,XNU 是 Darwin 的一部分,而 Darwin 又是基于 FreeBSD 和 NetBSD 开发,集成了 Mach 微内核,BSD 是基于 UNIX。虽然 Linux 也是基于 UNIX,但 Darwin 和 Linux 没有直接继承的关系。内核 Darwin 是 C 写的,中层框架和库时 C 和 Objective-C 写的。

本文先从一般桌面操作系统的内存机制入手;接着从 iOS 系统层进行分析 iOS 的内存机制及 iOS 系统运行时的内存占用情况;最后到 iOS 中单个 App 的内存管理。

iOS

iOS 编译过程梳理

iOS 开发常用的语言是 Objective-C 和 Swift,两者都是编译语言。编译语言在执行的时候,必须先通过编译器生成机器码,机器码可以直接在 CPU 上执行,所以执行效率很高。本篇主要用于梳理 Objective-C 的编译过程。

RunLoop 梳理

RunLoop 是 iOS 比较的核心之一,本篇用于梳理 RunLoop 相关的概念和底层实现。

AutoreleasePool 实现原理

AutoreleasePool(自动释放池)是 OC 中一种内存自动回收的机制。在 MRC 中,可以通过 [obj autorelease] 来延迟内存的释放;而 ARC 中的 autorelease 方法是被禁用的,无法主动调用,但对象的内存任在我们不知情的情况下被很好的管理。这就是依赖于背后的 Autorelease 机制,那么是如何管理的呢?

weak 源码分析

iOS 内是通过引用计数来管理内存,引用计数的管理,很容易会出现“循环引用”问题。weak 修饰符,也是开发日常最常用的打破循环引用方式。被 weak 修饰符修饰的弱引用除了不会增加对象的引用计数外;在引用对象被释放后,这个弱引用会自动失效并置为 nil。本篇总结分析下 Objective-C 中 weak 都是怎么实现的。

分析源码基于:DeveloperErenLiu/RuntimeAnalyze/objc4-799.1

记一次 clang 编译错误的解决

记录 clang 编译错误的解决。

$ clang -rewrite-objc main.m

WWDC17 505 - Photos APIs 新特性

视频链接:WWDC 2017 Session 505 - What’s New in Photos APIs

本节要介绍的是 Photos APIs 的一些新特性。简单的概括有下面这几点内容:

  • UIImagePickerController 的大幅优化
  • 授权模式的改进
  • 动图的支持
  • iCloud 照片图库的优化
  • 照片项目的扩展

后续内容,会对这几个点依次展开。