[swift] Swift 기반 애플리케이션이 OS X 10.9 / iOS 7 이하에서 작동합니까?

Swift 기반 애플리케이션은 OS X 10.9 (Mavericks) / iOS 7 이하에서 작동합니까?

예를 들어 OS X 10.8 (Mountain Lion)을 실행하는 컴퓨터가 있는데 Swift로 작성한 응용 프로그램이 실행 될지 궁금합니다.

아니면 Mac OS를 사용하여 Swift 응용 프로그램을 작성해야합니까?



답변

방금 테스트 한 결과 Swift 응용 프로그램은 표준 바이너리로 컴파일되며 OS X 10.9 및 iOS 7에서 실행될 수 있습니다.


테스트에 사용되는 간단한 스위프트 애플리케이션 :

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "I'am a test label"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}


답변

스위프트 코드는 OS X 10.9 및 iOS 7.0에 배포 할 수 있습니다. 이전 OS 버전에서 시작하면 일반적으로 충돌합니다.


답변

애플은 스위프트 앱이 iOS 7 및 OS X Mavericks와 호환 될 것이라고 발표했다. WWDC 앱은 Swift로 작성되었습니다.


답변

업데이트-Xcode 6 Beta 4에 따라

iOS 7 및 OS X 10.9 최소 배포 대상

Swift 컴파일러와 Xcode는 이제 iOS 7 또는 OS X Mavericks의 최소 배포 대상을 시행합니다. 이전 배포 대상을 설정하면 빌드가 실패합니다.

Xcode 6 릴리스 노트에서

따라서 이전 답변 (아래 참조)은 더 이상 개발에 적용되지 않습니다. iOS6 이하에서는 더 이상 스위프트를 사용할 수 없습니다.


스위프트 응용 프로그램은 iOS 6에서 실행할 수 있습니다. 많은 사람들이 스위프트가 iOS 7 이상과 OS X 10.9 이상 만 지원한다고 말하지만 내 경험으로는 그렇지 않습니다.

iOS 6 장치에서 Swift로 완전히 작성된 간단한 응용 프로그램을 테스트했습니다. 완벽하게 작동합니다 . Apple이 말했듯이 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 또는 일부 Swift 특정 API의 일부로 추가 된 새로운 API를 사용하지 않으면 (대응 API를 Objective-C에 사용할 수 없음) 응용 프로그램이 iOS 6 이상 (테스트 및 작동)에서 원활하게 작동합니다. iOS 5 (테스트되지 않음) Swift의 대부분의 API는 기존 Objective-C API를 대체하는 것입니다. 실제로 그들은 이진에서 동일합니다.

참고 : 신속한 응용 프로그램 배포 대상 Xcode 6 베타 4에 따르면 iOS 7 또는 OS X 10.9 (위의 업데이트 참조) 여야합니다. 따라서 iOS6 이하에서는 더 이상 swift를 사용할 수 없습니다.



답변

간단히 :

Swift 기반 애플리케이션은 동일한 앱을 사용 하여 OS X Mavericks 또는 iOS 7 을 대상으로 다시 지정할 수 있습니다.

그게 어떻게 가능해 ?

Xcode는 앱 번들 내에 작은 Swift 런타임 라이브러리를 포함합니다 . 라이브러리가 내장되어 있기 때문에 앱은 과거, 현재 및 향후 OS 릴리스에서 실행되는 일관된 Swift 버전을 사용합니다.

이 답변을 왜 신뢰해야합니까?

한 애플 녀석이 트위터에서 나에게 말했거나 안녕하세요 세계를 작성하고 테스트했을 때이 대답을 말하지 않기 때문입니다.

애플 개발자 블로그 에서 가져 왔습니다 .

믿을 수 있습니다.


답변

Swift는 Objective-C 와 동일한 런타임을 사용하며 WWDC 2014 기조에 따라 동일한 응용 프로그램에서 나란히 Objective-C를 사용할 수도 있습니다.

최종 답변을 찾으려면 Xcode 6 및 새로운 SDK를 사용하여 확인 / 확인해야합니다 .


답변

아니오, Swift는 iOS 7 이하에서 작동하지 않습니다. 그러나 YES 라고 말했습니다 . 6.0 배포 대상으로 Xcode 5에서 실행되는 Swift 프로젝트를 방금 만들었습니다.

  • Swift 프로그래밍 언어가 선택된 Xcode 6 BETA 로 데모 프로젝트를 만듭니다 .
  • Xcode 6 베타를 닫고 배포 대상 6.0이있는 Xcode 5 에서이 데모 프로젝트를 엽니 다.
  • 또한 시뮬레이터 6.1을 선택하십시오 .

그런 다음 해당 프로젝트는 시뮬레이터 6.1 에서 잘 실행됩니다 . 내 MacOS X는 10.9.3 이므로 iOS 7 보다 10.9.3 Mac OS X 보다 낮습니다 .

다음은 시뮬레이터의 스크린 샷입니다.

여기에 이미지 설명을 입력하십시오

여기 데모도 있습니다