【问题标题】:Does CFMutableBitVectorRef need to be explicitly released?CFMutableBitVectorRef 是否需要显式释放?
【发布时间】:2018-08-07 19:02:40
【问题描述】:

据我所知,以 CF 开头的基础类型是 C 类型,因此不计入引用,对吗?但据我所知,没有特定的 CFBitVectorRelease 函数。

我假设他们需要通过调用CFRelease 来释放,对吗?

【问题讨论】:

  • 是的,不是的,是的。它们是 C 类型(Core Foundation 是一个 C API,即没有对象)。它是引用计数的一种形式。 (保留的数量与发布的数量相匹配,但框架通常不会自动执行此操作,并且没有自动释放池的概念。)如果一个类型没有特定的CFRelease*()函数,请使用@ 987654323@.
  • @JamesBucanek 谢谢。你能把它写成答案吗?

标签: ios objective-c cocoa core-foundation


【解决方案1】:

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

因此,虽然 CF “类型”不是类/对象,但它们的行为类似于对象(其中一些实际上可以与 Objective-C 和 Swift 对象互换)。在它们的共同特征中,它们具有引用计数(平衡保留的数量与释放的数量,直到它们匹配并且类型/对象被释放)。

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

某些类型具有特定的CFReleaseThisType() 函数。如果一个类型没有特定的释放函数,使用CFRelease()

Core Foundation Memory Management 指南中已详细说明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多