我正在维护一个静态iOS库,该库是从以前的同事使用Xcode和Objective-C继承而来的。该代码包含很多
#if __has_feature(objc_arc)
我想知道我是否只能假设弧始终可用?该库已分发给客户,因此另一个问题是:在我“强迫”使用弧形库之后,他们是否需要更改某些内容才能使用我的库?我已经尝试寻找有关它的东西,到目前为止,在我看来,您可以在非弧形项目中使用弧框架。但是我不能完全确定我是否做对了,也因此我不希望任何客户做额外的工作。
最佳答案
如果您以编译形式分发它,那么可以,它要么启用ARC,要么不启用ARC,这完全在您的控制之下。二进制文件的用户以后不能更改。 ARC在编译时“发生”。
如果您将其作为源进行分发,则可以记录对ARC的要求,如果缺少该文件,则可以通过将类似的后卫放在一个地方来发出缺少的编译错误:
#if !__has_feature(objc_arc)
#error "MyLibrary requires compilation with ARC"
#endif
并删除周围散落的所有其他对象。
最后,使用ARC编译的代码可以与非ARC代码自由链接。如果MRR代码没有执行适当的内存管理,则会出现唯一的问题,但是我将其归类为该代码中现有错误的说明,而不是由使用ARC引起的问题。
关于ios - 在静态iOS库中强制使用ARC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49071111/