ios - 在静态iOS库中强制使用ARC

标签 ios objective-c automatic-ref-counting static-libraries

我正在维护一个静态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/

相关文章:

ios - Objective-C 中非综合属性的弱/强注解

ios - 我在哪里可以获得 `pngcrush` 工具优化 iOS 图像并可在 Linux 服务器上运行?

ios - 核心数据获取会返回什么样的错误?

ios - 禁用 Storyboard 和 Swift 2 中的 UIButton 突出显示

iphone - 如何设置最小时间每次都显示为UIDatepicker中的默认时间

ios - ARC、自身和 block

html - 移动浏览器 (iOS) 上的 CSS 行高

iphone - '+[NSInspiration调用WithMethodSignature :]: method signature argument cannot be nil' (Cocos2D)

iphone - 这个数据模型可以使用 NSBinaryStoreType 吗?

ios - 收费桥过度释放