Objective-c:为什么Core Foundation变量需要在ARC中显式发布?

前et

当我想到ARC时,没有发布的开销。但是一旦遇到这些Core Foundation变量,它们也需要在ARC中发布。

虽然ARC规则是两个不同的NS..CF..,是有不支持任何具体的原因CF..在ARC?

罗布·纳皮尔

当我想到ARC时,没有发布的开销。

我认为您的意思是“我不必担心释放”。尽管编译器有时可以对其进行优化,但通常会存在一些性能开销。

尽管NS ..和CF ..的ARC规则都不同,但是是否有任何特定原因不支持ARC中的CF ..?

许多核心基础对象由ARC管理,以及它们的数量不断增加。您可以通过在标头中查找来判断特定功能是否支持ARC CF_IMPLICIT_BRIDGING_ENABLED如果看到,函数将返回ARC兼容CF对象。例如,在iOS 8中,许多核心图形功能已添加到列表中。(我不想夸大这一点;我并不是说今天您今天还不需要CFRelease这些。我是说它们是由ARC管理的,它们是由Swift中的ARC管理的,最终可能直接在ObjC中直接处理,而无需CFRelease。)

默认情况下不管理CF对象的原因是,必须有人检查并验证(审核)每个函数均符合“创建规则”命名约定,或为它们的异常正确注解。这项工作相当繁琐,Apple已将其扩展到多个版本中。但是随着时间的推移,您会发​​现这种情况越来越好。

Kazuki是正确的,您不能将ARC管理的对象放在结构或联合中,但这通常不会影响Core Foundation。

顺便说一句,CF_IMPLICIT_BRIDGING_ENABLED它只是arc_cf_code_auditedclang编译指示的包装ARC文档7.8.1对C可保留指针接口进行审核中对此进行了说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Objective-C为什么需要__NSGlobalBlock__

来自分类Dev

我需要在Objective-C中使用此数组。如何在Objective-C中将其声明为显式数组?

来自分类Dev

为什么需要在Objective-C中使用@property关键字?

来自分类Dev

为什么需要在Objective-C的头文件中使用“外部静态”定义常量?

来自分类Dev

为什么需要在Objective-C的头文件中使用“外部静态”来定义常量?

来自分类Dev

Objective-C,为什么我需要在这里而不是在这里放星号

来自分类Dev

?:在Objective-C中

来自分类Dev

Objective-C:“ Hello world”已完成!没有Foundation标头。为什么?

来自分类Dev

ARC中的Objective-C命名约定

来自分类Dev

为什么Objective-C编译器需要知道方法签名?

来自分类Dev

为什么在将其强制转换为void *类型之前需要复制Objective-C处理程序?

来自分类Dev

为什么Objective-C需要2010年后的Mac?

来自分类Dev

为什么在Swift项目中需要Objective-C桥接头?

来自分类Dev

为什么我们需要在MSIL中显式调用父构造函数?

来自分类Dev

为什么我需要在docker-compose.yml中显式声明env_file?

来自分类Dev

设置变量时使用viewDidLoad或initWithCoder进行Objective-C iOS开发,为什么?

来自分类Dev

为什么在Objective-C中用星号声明某些变量

来自分类Dev

为什么在Objective-C中将变量和方法作为字符串传递?

来自分类Dev

为什么在Objective-C类中具有类型-(id)的initTESTING()无法在Swift中调用?

来自分类Dev

为什么Objective-C中的“ try catch”会导致内存泄漏?

来自分类Dev

为什么Objective-C中的Ioc容器不是一种流行的方法?

来自分类Dev

为什么在Objective-C中自动调用此委托方法?

来自分类Dev

为什么Objective-C在差异类中不支持相同的方法名?

来自分类Dev

为什么在Objective-C / Swift中很难进行异步网络测试?

来自分类Dev

为什么我在Objective C中获得NSString的值(如0xb000000000000033)

来自分类Dev

即使文件在桥中,为什么我也无法访问objective-c 方法?

来自分类Dev

为什么我需要在C#显式实现中将'this'转换为接口类型?

来自分类Dev

Objective-C通过引用传递与通过指针传递。有什么不同?为什么我们根本需要它?

来自分类Dev

Objective-C @实现变量

Related 相关文章

  1. 1

    Objective-C为什么需要__NSGlobalBlock__

  2. 2

    我需要在Objective-C中使用此数组。如何在Objective-C中将其声明为显式数组?

  3. 3

    为什么需要在Objective-C中使用@property关键字?

  4. 4

    为什么需要在Objective-C的头文件中使用“外部静态”定义常量?

  5. 5

    为什么需要在Objective-C的头文件中使用“外部静态”来定义常量?

  6. 6

    Objective-C,为什么我需要在这里而不是在这里放星号

  7. 7

    ?:在Objective-C中

  8. 8

    Objective-C:“ Hello world”已完成!没有Foundation标头。为什么?

  9. 9

    ARC中的Objective-C命名约定

  10. 10

    为什么Objective-C编译器需要知道方法签名?

  11. 11

    为什么在将其强制转换为void *类型之前需要复制Objective-C处理程序?

  12. 12

    为什么Objective-C需要2010年后的Mac?

  13. 13

    为什么在Swift项目中需要Objective-C桥接头?

  14. 14

    为什么我们需要在MSIL中显式调用父构造函数?

  15. 15

    为什么我需要在docker-compose.yml中显式声明env_file?

  16. 16

    设置变量时使用viewDidLoad或initWithCoder进行Objective-C iOS开发,为什么?

  17. 17

    为什么在Objective-C中用星号声明某些变量

  18. 18

    为什么在Objective-C中将变量和方法作为字符串传递?

  19. 19

    为什么在Objective-C类中具有类型-(id)的initTESTING()无法在Swift中调用?

  20. 20

    为什么Objective-C中的“ try catch”会导致内存泄漏?

  21. 21

    为什么Objective-C中的Ioc容器不是一种流行的方法?

  22. 22

    为什么在Objective-C中自动调用此委托方法?

  23. 23

    为什么Objective-C在差异类中不支持相同的方法名?

  24. 24

    为什么在Objective-C / Swift中很难进行异步网络测试?

  25. 25

    为什么我在Objective C中获得NSString的值(如0xb000000000000033)

  26. 26

    即使文件在桥中,为什么我也无法访问objective-c 方法?

  27. 27

    为什么我需要在C#显式实现中将'this'转换为接口类型?

  28. 28

    Objective-C通过引用传递与通过指针传递。有什么不同?为什么我们根本需要它?

  29. 29

    Objective-C @实现变量

热门标签

归档