基于swift的应用程序能在OS X 10.9 (Mavericks)/iOS 7及更低版本上运行吗?

例如,我有一台运行OS X 10.8 (Mountain Lion)的机器,我想知道我用Swift写的应用程序是否能在它上面运行。

或者我应该有什么创建一个Swift应用程序使用Mac OS?


当前回答

更新-根据Xcode 6 Beta 4

iOS 7和OS X 10.9的最低部署目标 Swift编译器和Xcode现在强制ios7或OS X的最低部署目标 小牛。设置较早的部署目标会导致构建失败。

来自Xcode 6发布说明

所以我之前的答案(如下所示)将不适用于任何进一步的开发。Swift将不再适用于iOS6及以下系统


Swift应用可以在iOS 6上运行。尽管很多人说Swift只支持iOS 7+和OS X 10.9+,但从我的经验来看,事实并非如此。

我在iOS 6设备上测试了一个完全用Swift编写的简单应用程序。它工作得非常好。正如苹果所说,Swift代码与Objective-C代码是二进制兼容的。它使用相同的编译器和运行时来创建二进制文件。

下面是我测试过的代码:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        let button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
        button.frame = CGRectMake(100, 100, 100, 50)
        button.backgroundColor = UIColor.greenColor()
        button.setTitle("Test Button", forState: UIControlState.Normal)
        button.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside)

        self.view.addSubview(button)
    }

    func buttonTapped(sender: UIButton!) {
        println("buttonTapped")
    }
}

这是一个简单的应用程序,只是通过编程方式添加一个按钮。我的应用程序只包含两个文件,AppDelegate.swift和ViewController.swift。

因此,如果你没有使用任何作为iOS 8 SDK的一部分添加的新API或一些Swift特定的API(对应的API不适用于Objective-C),你的应用程序将无缝地运行在iOS 6或更高版本(测试并工作),甚至在iOS 5(未测试)上。Swift中的大多数api只是对现有Objective-C api的替换。事实上,它们在二进制中是一样的。

注意:根据Xcode 6 beta 4的swift应用程序部署目标应该是iOS 7或OS X 10.9(见上面的更新)。所以swift将不再适用于iOS6及以下系统


其他回答

说到Swift框架。 截至目前,在Xcode 6.1.1 (6A2008a)版本中,如果Swift框架针对iOS 7.1,链接器报告警告

ld: warning: embedded dylibs/frameworks only run on iOS 8 or later.

并且应用程序无法提交到AppStore。检查这个问题:Lint阻止动态库和框架在iOS 7中传递

Swift代码可以部署在OS X 10.9和iOS 7.0上。在较旧的操作系统版本上,它通常会在启动时崩溃。

是的,事实上苹果已经宣布Swift应用程序将向后兼容iOS 7和OS X Mavericks。此外,WWDC应用程序是用Swift编程语言编写的。

简而言之:

基于Swift的应用程序可以针对OS X Mavericks或iOS 7的同一应用程序。

这怎么可能?

Xcode在你的应用程序包中嵌入了一个小的Swift运行时库。因为这个库是嵌入式的,所以你的应用程序使用了一个一致的Swift版本,可以在过去、现在和未来的操作系统版本上运行。

我为什么要相信这个答案?

因为我不是像一个苹果人在推特上告诉我的那样说这个答案,或者我写了hello world并测试了它。

我从苹果开发者博客上截取的。

所以你可以相信这个。

虽然代码证实了这一点,但苹果自己在WWDC 2014的技术主题演讲(平台状态,102次会议,大约34分00秒)中表示,Swift将在iOS 7和Mavericks上兼容。