I agree that the description is confusing. Since I just grasped them, I’ll try to summarize:
-
(__bridge_transfer <NSType>) op
or alternativelyCFBridgingRelease(op)
is used to consume a retain-count of aCFTypeRef
while transferring it over to ARC. This could also be represented byid someObj = (__bridge <NSType>) op; CFRelease(op);
-
(__bridge_retained <CFType>) op
or alternativelyCFBridgingRetain(op)
is used to hand anNSObject
over to CF-land while giving it a +1 retain count. You should handle aCFTypeRef
you create this way the same as you would handle a result ofCFStringCreateCopy()
. This could also be represented byCFRetain((__bridge CFType)op); CFTypeRef someTypeRef = (__bridge CFType)op;
-
__bridge
just casts between pointer-land and Objective-C object-land. If you have no inclination to use the conversions above, use this one.
Maybe this is helpful. Myself, I prefer the CFBridging…
macros quite a bit over the plain casts.