用仪器分析Swift,_swift_retain_究竟是什么?

Ste*_*Kuo 7 performance instruments ios swift

我正在使用Instruments分析我的Swift iOS应用程序.花了很多时间

_swift_retain_(swift::HeapObject*) libSwiftCore.dylib
Run Code Online (Sandbox Code Playgroud)

_swift_release_(swift::HeapObject*) libSwiftCore.dylib
Run Code Online (Sandbox Code Playgroud)

我的代码主要是创建(并超出范围)结构和元组.我的理解是,因为它们是值对象,所以它们被分配在堆栈上,因此我不应该看到这么多堆动作.

究竟是什么意思_swift_retain__swift_release_意思?

dfr*_*fri 3

这些函数_swift_retain_Swift 自动引用计数 (ARC)_swift_release_的一部分。有关详细信息,请参阅stdlib 中的源代码。ARC 似乎经常被诸如此类的性能问题所困扰,但我很惊讶你看到这种行为仅使用值类型。然而,这可能是由于 ARC 背后的原因造成的。