我想在我的Objective-C应用程序中使用C++库,为此,我有一个中间静态库,它将使用Objective-C++ (.mm文件而不是.m)。反过来,静态库将由我的iOS应用程序使用。
在Objective-C++库中,启用ARC是安全的,还是应该让我的Objective-C应用程序来处理?
发布于 2013-06-09 06:36:32
ARC TL;DR答案:选择你喜欢的,但最好都支持。如果你想要,就使用它。如果你不想要ARC,那就别用它。(从你的问题推断,你很可能是一个初学者-在这种情况下,我建议你好好学习手动内存管理,这样你就可以知道和理解引用计数发生了什么以及为什么,然后你可以在以后的生产代码中过渡到使用ARC。)
如果将二进制静态库文件本身 (MyLibrary.a)分发给,则没有任何区别。正如@nil已经指出的: ARC是一种编译时技术(以过于简单的方式解释,它只是插入对retain、release和autorelease的调用。它对链接时间没有影响,更不用说运行时了)。所以一旦代码编译完成,没有人知道你是否使用了ARC,因此你的库的用户也不需要担心这一点。
但是,如果你发布你的库的源代码(我强烈建议),那么用户需要知道你是否设计它在ARC下使用或不在ARC下使用。所以决定一次,然后保持一致--你可能更喜欢ARC代码,以便于使用和编写,或者更喜欢非ARC代码,以便向后兼容。理想的态度是同时支持ARC和非ARC编译,在special macro __has_feature(objc_arc)中使用编译时功能检测。
发布于 2013-06-09 06:23:42
ARC是一个编译时特性,因此如果该库被设计为使用ARC,则需要在构建该库时启用它。否则,你很可能会被泄露。无论是Obj-C++还是Obj-C,在这里都没有什么区别。
https://stackoverflow.com/questions/17004446
复制相似问题