据我所知,以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;
来释放他们,这是正确的吗?
答案 0 :(得分:2)
Core Foundation是一个C API;没有语言级别的对象。
因此,虽然CF“类型”不是类/对象,但它们就像对象一样(有几个实际上可以与Objective-C和Swift对象互换)。在它们的共享特征中,它们具有引用计数(将保留数量与发布数量相平衡,直到它们匹配并且类型/对象被解除分配)。
但由于这是C,因此没有内置,自动或隐含的引用计数(例如ARC)。因此,您需要手动保留该类型,直到您不再需要它为止,此时您必须调用CFRelease
来处置它。 Core Foundation没有自动发布池。
某些类型具有特定的CFReleaseThisType()
功能。如果某个类型没有特定的发布功能,请使用CFRelease()
。
这一切都在Core Foundation Memory Management指南中详细说明。