基于swift的应用程序能在OS X 10.9 (Mavericks)/iOS 7及更低版本上运行吗?
例如,我有一台运行OS X 10.8 (Mountain Lion)的机器,我想知道我用Swift写的应用程序是否能在它上面运行。
或者我应该有什么创建一个Swift应用程序使用Mac OS?
基于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及以下系统
其他回答
正如Beta 4发布说明所述,Swift应用程序支持iOS 7及以上版本。iOS 6.0, 6.1, 7.0, 7.1, 8.0在Xcode 6 Beta
Swift应用程序支持OS X 10.9及以上平台。“部署目标”中的OS X 10.4 ~ 10.10。我已经在目标10.5到10.10上进行了测试,并在10.9.3上运行
试试下面的代码:
它在没有StoryBoard的情况下工作:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
self.window!.backgroundColor = UIColor.whiteColor()
// Create a nav/vc pair using the custom ViewController class
let nav = UINavigationController()
let vc = ViewController(nibName: "ViewController", bundle: nil)
// Push the vc onto the nav
nav.pushViewController(vc, animated: false)
// Set the window’s root view controller
self.window!.rootViewController = nav
// Present the window
self.window!.makeKeyAndVisible()
return true
}
快速更新,从2015年2月15日起生效,我们不能将使用iOS 8之前的SDK开发的应用程序提交到应用商店。所以,记住这一点,最好不要担心这个问题,因为许多人都建议用Swift开发的应用程序也可以部署在OS X 10.9和iOS 7.0上。
我读了所有回答:不,Swift不能在iOS 7以下的系统上运行。但我说是的,我刚刚创建了一个Swift项目,它在Xcode 5 6.0部署目标中运行。
我只是用选择的Swift编程语言在Xcode 6 BETA中创建了一个演示项目。 关闭Xcode 6 beta,我在Xcode 5中以部署目标6.0打开这个演示项目 并选择模拟器6.1。
然后该项目在模拟器6.1中运行良好。我的MacOS X是10.9.3,所以我说是的,它运行在低于iOS 7的系统上。10.9.3 Mac OS X。
这是模拟器的截图:
这里还有一个演示
更新-根据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及以下系统