__bridge 在 Objective C 中意味着什么?

-2 core-graphics objective-c automatic-ref-counting

我正在关注 Core Graphics 中的教程,并且遇到了代码 __bridge。我查看了一下,发现它与 ARC 有关,但我对它的作用感到困惑。有人可以解释它在这种情况下的作用吗?

    void drawLinearGradient(CGContextRef context, CGRect rect, CGColorRef startColor, CGColorRef endColor)
{
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGFloat locations[] = { 0.0, 1.0 };

    NSArray *colors = @[(__bridge id) startColor, (__bridge id) endColor];

    CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, (__bridge CFArrayRef) colors, locations);

}
Run Code Online (Sandbox Code Playgroud)

hig*_*ted 5

它是自动引用计数 (ARC) 的一部分。来自文档

__bridge在 Objective-C 和 Core Foundation 之间转移指针,但不转移所有权。