我们能在部署目标低于iOS 7的应用程序中集成Swift代码吗?

13 浏览
0 Comments

我们能在部署目标低于iOS 7的应用程序中集成Swift代码吗?

由于Swift支持与Objective-C的混合使用,那么我们可以将其用于构建部署目标低于iOS 7的应用程序吗?

Swift预发布文档中的基本设置部分,我读到的是:

Swift旨在与Cocoa和Objective-C提供无缝的兼容性。您可以在Swift中使用Objective-C API(从系统框架到自定义代码),也可以在Objective-C中使用Swift API。这种兼容性使得Swift成为集成到Cocoa应用程序开发工作流程中的一种简单、方便和强大的工具。

本指南介绍了三个重要方面的兼容性,在开发Cocoa应用程序时可以利用这些方面:

● 互操作性允许您在Swift和Objective-C代码之间进行接口,使您能够在Objective-C中使用Swift类,并在编写Swift代码时利用熟悉的Cocoa类、模式和实践。

● 混合使用允许您创建包含Swift和Objective-C文件的混合语言应用程序,它们可以相互通信。

● 使用互操作性和混合使用可以轻松迁移现有的Objective-C代码到Swift,使您能够用最新的Swift功能替换您的Objective-C应用程序的部分功能。

因此,阅读完这些内容后,我脑海中出现了以下问题:

  1. 我们可以在我们目前正在开发的应用程序中使用Swift吗?
  2. 如果答案是否定的,那么它将与上述解释相矛盾。
0
0 Comments

可以将Swift代码整合到部署目标小于iOS 7的应用程序中吗?

问题的原因:

根据Xcode 6 Beta 4的发布说明,Swift编译器和Xcode现在要求最低部署目标为iOS 7或OS X Mavericks。将部署目标设置为较早的版本会导致构建失败。

问题的解决方法:

根据之前的回答,可以在iOS 6设备上测试使用Swift编写的简单应用程序,它能够正常运行。苹果表示,Swift代码与Objective-C代码是二进制兼容的。它们使用相同的编译器和运行时来创建二进制文件。

因此,如果您没有使用iOS 8 SDK中添加的新API或一些Swift特定的API(在Objective-C中没有对应的API),您的应用程序将在iOS 6以上(经过测试并且能够正常工作)甚至iOS 5(未经测试)上无缝运行。Swift中的大多数API只是现有Objective-C API的替代品。实际上,它们在二进制上是相同的。

但需要注意的是,iOS 5会出现关于Swift库的错误,因此无法作为部署目标。

0
0 Comments

可以。我已经在我的iOS6设备上测试了一个完全用Swift编写的简单应用程序,它运行得非常好。正如苹果所说,Swift代码与ObjectiveC代码是二进制兼容的。它使用相同的编译器和运行时来创建二进制代码。

因此,如果您没有使用iOS8 SDK中添加的任何新API或一些特定于Swift的API(ObjectiveC没有相应的API),您的应用程序将在iOS6+(已测试并正常工作),甚至iOS5(未测试)上无缝运行。 Swift中的大多数API只是现有ObjectiveC API的替代品。实际上,它们在二进制上是相同的。

0
0 Comments

在Xcode Beta中,如果你在项目的Target中选择Deployment Info,可以看到Deployment Target的下拉菜单中有6.0、6.1、7.0、7.1和8.0这些选项。根据我所知,Swift确实支持较低版本的iOS(如iOS 6)。我在Xcode 6中用Swift语言创建的一个演示项目,在将该项目在Deployment Target为6的Xcode 5中打开后也能正常运行。这里有一个在Xcode 5上运行iOS 6.1模拟器的Swift项目的截图。但是实际上,并不是所有的Swift项目都能在较低版本的iOS上编译运行。尽管Xcode 6中有这个选项,但并不意味着所有的Swift项目都能通过编译。所以我们需要等待一些权威的声明来确认这一点。但是从现有的情况来看,我们可以使用Xcode 6来开发Deployment Target低于iOS 7或iOS 8的应用程序。

0