ImageIO 对外开放的对象有 CGImageSourceRef、CGImageDestinationRef,不对外开放的对象有 CGImageMetadataRef。CoreGraphics 中经常与 imageIO 打交道的对象有 CGImageRef 和 CGDataProvider,接下来看看这五个对象在创建一个 UIImage 中担任了哪些角色。 用 TimeProfiler 一步一步来看创建 UIImage 过程中内部调用的函数可以帮助我们解决问题,由于 TimeProfiler 统计函数栈为间隔一段时间统计一次,导致没有记录下所有函数的调用而且每次函数栈还可能不一致,所以没法精确判断函数栈是如何调用的,但是可以大概推测出每步做了什么。