我开始将 Swift 文件添加到一个不使用 ARC 的非常大的遗留 Objective-C 项目。
当我编译项目时,我会收到针对 ProjectName-Swift.h
桥头文件中发出的每个属性的警告:
- 未指定“分配”、“保留”或“复制”属性 - 假定为“分配”
- 默认属性“assign”不适用于非 GC 对象
看起来 Swift 正在发布基于 ARC 的 Objective-C 代码。
这是这个特定版本的 Swift 中的限制/错误,还是 Swift 设计为仅适用于 ARC 代码?
最佳答案
您可以混合使用 ARC 和非 ARC 代码。所有 ARC 编译代码所做的就是自动为用户管理其内存。您应该为项目启用 ARC,然后使用 -fno-objc-arc
为单个文件禁用 ARC,或者使用 -fobjc-arc
为 Swift 文件启用 ARC(这可能不是必需的,因为编译器可能会自动添加它)。 Swift 代码最终编译为使用相同的 Objective C 运行时,编译器插入的 ARC 调用与在 Objective C 中相同。编译后,ARC 和非 ARC 代码的行为相同。
关于objective-c - Swift 与 ARC 之前的 Objective-C 不兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24097817/