ope*_*rog 7 memory-management ios automatic-ref-counting
ARC迁移工具遇到了这个问题:
NSURL *fileURL = [NSURL fileURLWithPath:path];
AudioFileOpenURL((CFURLRef)fileURL, kAudioFileReadPermission, 0, &fileID);
Run Code Online (Sandbox Code Playgroud)
特别是,它不确定它是否应该执行__bridge或__bridge_retained.而我也是.
-fileURLWithPath返回一个自动释放的对象,在这个地方我不是fileURL的所有者.但与此同时,该对象的保留计数至少为+1.
我敢打赌,这只能用__bridge来完成.
Jas*_*oco 12
您只想为此使用常规__bridge强制转换.__bridge_retained仅当您想要管理强制转换CF对象的生命周期时才使用.例如:
CFStringRef cf_string = (__bridge_retained CFStringRef)someNSString;
// some long time later, perhaps in another method etc
CFRelease(cf_string);
Run Code Online (Sandbox Code Playgroud)
所以这__bridge_retained真的告诉编译器你有一个ARC对象,现在你想基本把它变成一个你要直接管理的CF对象.
| 归档时间: |
|
| 查看次数: |
4790 次 |
| 最近记录: |