objective-c - Swift 与 ARC 之前的 Objective-C 不兼容吗?

标签 objective-c automatic-ref-counting swift

我开始将 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/

相关文章:

iphone - 最佳方法 : Read And Understand Unknown Xcode Projects

objective-c - 两个 NSOpenGLContext 之间究竟共享什么?

ios - __bridge 在没有电弧的情况下崩溃但必须在没有电弧的情况下使用

swift - 无法在 Realm swift 中编写字符串不等于的查询

iOS 在 Swift 中获取信号强度(Core Telephony)

objective-c - 从 Haskell 或 Objective-C 生成带语法颜色的超链接源代码

objective-c - 5 种 Magical Record 设置方法有什么区别?

objective-c - 如果 ARC 由编译器处理,为什么在 iOS 4 和 Mac OS X 10.6 上不支持 weak?

ios - WKWebView子类在dealloc上崩溃

ios - UIGestureRecognizerStateEnded 的 Swift 等价物是什么?