A quick example of what I was thinking along the same lines as bbum.
Casting from CF ... to NS ... confuses ARC if done incorrectly, for example:
CFArrayRef *supportedInterfaces = CNCopySupportedInterfaces(); NSArray *interfaceNames = (__bridge_transfer NSArray *)supportedInterfaces; CFRelease(supportedInterfaces);
Will over-release be supported by Interfaces since __bridge_transfer saves NSArray when CFArrayRef is released. In this case, either do not use CFRelease (), or use the usual __bridge.
source share