如果我们不使用CFRelease使用ARC有什么选择。如果我们使用ARC,那么CFRelease会抛出错误。我尝试使用_bridge和_bridge_transfer都不起作用。什么是CFRelease的替代
回答
没有其他选择CFRelease
。 CFRelease
是必要的,ARC或不。 ARC管理ObjC对象只有。
在某些情况下,框架可能会为特定类型提供更专门的版本(例如CGContextRelease
),但实际上没有其他选择。
CFRelease
指出通过NULL
时出错。如果这是你看到的错误而你不想要这种行为,那么你总是可以编写自己的包装函数,它在传递之前先测试参数。
如果您有更具体的错误或更具体的问题,我们可能会帮助更多。
听起来好像你正在尝试在代码中交替使用一些Core Foundation和Objective-C对象,但是没有看到任何代码,我无法确定发生了什么。但是,有一个非常重要的说明需要提及,以防万一您不知道:
ARC仅自动管理Objective-C对象的内存,这就是为什么您不需要再拨打release
。因此,ARC不会为而不是自动管理Core Foundation对象的内存,这就是您使用CFRelease()
的原因。
*如果您尝试在Objective-C对象上使用CFRelease(),则会出现错误。* - 这不是事实。当然,如果有一个引用计数*不平衡*是错误的。 – justin
我正在添加这些代码行NSString \t \t \t NSString * lObjContactNumberLabelPtr =(NSString *)nil; lObjContactNumberLabelPtr =(__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex(pPhonePropertyPtr,i); lObjContactInfoPtr = [lObjContactNumberLabelPtr stringByReplacingOccurrencesOfString:@“_ $!<”withString:@“”]; CFRelease( ); – user1617481
- 1. 什么是CFRelease for Core Foundation对象的好替代方案?
- 2. 什么是替代(替代())?
- 3. 什么是Oracle.Connection的替代?
- 4. 什么是Session.ReauthorizeRequest的替代?
- 5. 什么是UDID的替代?
- 6. 什么是file_column的替代?
- 7. 什么是Sets.newConcurrentHashSet()的替代?
- 8. 什么是iframe替代品?
- 9. 什么是APC替代品?
- 10. 是什么了session_register替代
- 11. 什么是替代http.request()
- 12. 什么是Erlang替代品?
- 13. 什么是替代PackageAdmin.getFragments
- 14. 什么是替代在C + +
- 15. 什么是替代@RunWith(JMock.class)?
- 16. 什么是ReadWriteTimeout替代的HttpClient的
- 17. 我什么时候使用CFRelease?
- 18. 什么是。jioster的.net替代方案
- 19. 什么是Set-WindowsAzureLog的替代品?
- 20. 什么是MVC的替代方案?
- 21. 什么是Spark DataGrid中labelFunction的替代?
- 22. 什么是ActionController :: Base.relative_url_root的替代?
- 23. 什么是GarbageCollector的替代方案?
- 24. C#什么是设置的替代
- 25. 什么是AuthChallengeParser的新类或替代?
- 26. 什么是matlabFunction的好替代品?
- 27. 什么是GeoEXT的替代品?
- 28. System.Data.OracleClient.OracleCommand的替代选择是什么?
- 29. Ninject 2.0 - 什么是ConventionMemberSelector的替代
- 30. java.util.calendar的替代方法是什么?
我不期待H2CO3的任何评论,即用户“Nikolai Ruhe”如果且仅当它是建设性的我会接受其他我不会接受。 – user1617481
对不起,如果我打了@ H2CO3,但这个问题不够具体,不足以帮助我们诊断您的问题。张贴一些代码,以及一些什么/哪里/如何失败的描述。 – rickster