首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你会为objective-c++静态库启用ARC吗?

你会为objective-c++静态库启用ARC吗?
EN

Stack Overflow用户
提问于 2013-06-09 06:21:25
回答 2查看 724关注 0票数 0

我想在我的Objective-C应用程序中使用C++库,为此,我有一个中间静态库,它将使用Objective-C++ (.mm文件而不是.m)。反过来,静态库将由我的iOS应用程序使用。

在Objective-C++库中,启用ARC是安全的,还是应该让我的Objective-C应用程序来处理?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-09 06:36:32

ARC TL;DR答案:选择你喜欢的,但最好都支持。如果你想要,就使用它。如果你不想要ARC,那就别用它。(从你的问题推断,你很可能是一个初学者-在这种情况下,我建议你好好学习手动内存管理,这样你就可以知道和理解引用计数发生了什么以及为什么,然后你可以在以后的生产代码中过渡到使用ARC。)

如果将二进制静态库文件本身 (MyLibrary.a)分发给,则没有任何区别。正如@nil已经指出的: ARC是一种编译时技术(以过于简单的方式解释,它只是插入对retainreleaseautorelease的调用。它对链接时间没有影响,更不用说运行时了)。所以一旦代码编译完成,没有人知道你是否使用了ARC,因此你的库的用户也不需要担心这一点。

但是,如果你发布你的库的源代码(我强烈建议),那么用户需要知道你是否设计它在ARC下使用或不在ARC下使用。所以决定一次,然后保持一致--你可能更喜欢ARC代码,以便于使用和编写,或者更喜欢非ARC代码,以便向后兼容。理想的态度是同时支持ARC和非ARC编译,在special macro __has_feature(objc_arc)中使用编译时功能检测。

票数 2
EN

Stack Overflow用户

发布于 2013-06-09 06:23:42

ARC是一个编译时特性,因此如果该库被设计为使用ARC,则需要在构建该库时启用它。否则,你很可能会被泄露。无论是Obj-C++还是Obj-C,在这里都没有什么区别。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17004446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档