是否需要明确发布CFMutableBitVectorRef?

时间:2018-02-28 01:04:58

标签: ios objective-c cocoa core-foundation

据我所知,以CF开头的基础类型是C类型,因此没有引用计数,这是正确的吗?但据我所知,没有具体的CFBitVectorRelease函数。

我假设他们需要通过致电const PrivateRoute = (props) => { const userKey = Object.keys(window.localStorage) .filter(it => it.startsWith('firebase:authUser'))[0]; const user = userKey ? JSON.parse(localStorage.getItem(userKey)) : undefined; if (user) { return <Route {...props} /> } else { return <Redirect to='/admin'/> } } export default PrivateRoute; 来释放他们,这是正确的吗?

1 个答案:

答案 0 :(得分:2)

Core Foundation是一个C API;没有语言级别的对象。

因此,虽然CF“类型”不是类/对象,但它们就像对象一样(有几个实际上可以与Objective-C和Swift对象互换)。在它们的共享特征中,它们具有引用计数(将保留数量与发布数量相平衡,直到它们匹配并且类型/对象被解除分配)。

但由于这是C,因此没有内置,自动或隐含的引用计数(例如ARC)。因此,您需要手动保留该类型,直到您不再需要它为止,此时您必须调用CFRelease来处置它。 Core Foundation没有自动发布池。

某些类型具有特定的CFReleaseThisType()功能。如果某个类型没有特定的发布功能,请使用CFRelease()

这一切都在Core Foundation Memory Management指南中详细说明。