在Objective-C ++中编码时应该使用ARC吗?

卡京

我从事一个Objective-C ++库项目。到目前为止,在基于C ++的代码库中,只有一个ObjC对象包装在C ++单例对象中。但是该库的客户端代码很可能会始终使用ARC。

在某些情况下,我需要将ObjC结构(即包含ObjC对象成员的结构)转换为C(++)对应对象。

我从这篇文章中读到:

http://philjordan.eu/article/mixing-objective-c-c++-and-objective-c++

那:

即使您在项目中使用ARC,我也建议您对像这样的C ++繁重的Objective-C ++文件禁用ARC。您可以使C ++代码甚至在ARC情况下也能表现出来,但是通常要比仅发布版本和保留调用多得多。

作者没有详细说明他如何得出这个结论。该帖子的最新更新时间为2012年。我想知道这背后是否存在任何重大问题,还是随着ObjC的发展而变得过时的信息。

谢谢!

Rychu

我一直在使用c ++ / objc mixes和arc / no-arc没问题。在弧中唯一发生的事情是objc在大多数使用objc对象的地方自动添加保留/释放。如果您的c ++类将使用objc对象,则还需要启用objc-在这种情况下,arc仅在启用(并允许使用该文件的情况下)才起作用。否则,您需要手动保留/释放。ARC不会影响c ++内存管理,因此仅此而已。

因此,除非您想对objc对象使用void *并且在您的c ++代码中没有objc支持,否则只需遵循arc / non-arc规则,就可以了。

我的猜测是,为什么您可能希望在c ++文件中没有弧,是为了避免有时会增加弧的过度保留/释放调用-因此,基本上,如果您知道真正需要保留对象的位置(哪个编译器不知道并保留)到处都是),这样您就可以让应用进行更少的计算。同样,弱引用在错误的地方(例如c ++散列集或作为映射中的键,可能会被重新分配的地方)使用时可能会破坏事物,在简单情况下它们通常会起作用。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ARC中的Objective-C命名约定

来自分类Dev

?:在Objective-C中

来自分类Dev

Objective-C ++中的智能指针可以完全替代ARC吗?

来自分类Dev

Objective-C中的UILexicon

来自分类Dev

Swift中的Objective C委托

来自分类Dev

在Objective-C中@@ synchronized

来自分类Dev

在Objective-C中绘制

来自分类Dev

Objective-C ++中的UIGestureRecognizer

来自分类Dev

Objective-c 中的空格

来自分类Dev

使用Objective-C的SFSafariViewController

来自分类Dev

使用JSON的Objective-C

来自分类Dev

释放对象时执行Objective-C方法-我应该解决这个问题吗?

来自分类Dev

Objective-C / ARC ivar与属性

来自分类Dev

Objective-C ARC和longjmp

来自分类Dev

Objective-C块寿命ARC

来自分类Dev

Objective-C / ARC ivar与属性

来自分类Dev

__在ARC Objective-C中自动释放返回值

来自分类Dev

使用ARC在void *指针中分配Objective-C对象

来自分类Dev

如何使用ARC优化Objective-C单例?

来自分类Dev

使用ARC在void *指针中分配Objective-C对象

来自分类Dev

Objective-C URL编码问题

来自分类Dev

Swift中不应该执行Objective-C的可选协议吗?

来自分类Dev

Objective-C中的C ++矩阵

来自分类Dev

Objective-C应该同时使用GestureRecognizer进行识别

来自分类Dev

SonarQube Objective C插件是商业的吗?

来自分类Dev

Objective-C中的指针传递问题

来自分类Dev

Objective-C类中的Swift协议

来自分类Dev

Objective-C中的类扩展

来自分类Dev

在Objective C中合并数组及其计数