the programming lenguaje language documentación descargar apple ios macos swift

ios - lenguaje - the swift programming language pdf



¿Las aplicaciones basadas en Swift funcionan en OS X 10.9/iOS 7 y versiones inferiores? (18)

¿Funcionarán las aplicaciones basadas en Swift en OS X 10.9 (Mavericks) / iOS 7 y versiones inferiores?

Por ejemplo, tengo una máquina que ejecuta OS X 10.8 (Mountain Lion), y me pregunto si una aplicación que escribo en Swift se ejecutará en ella.


En breve:

Las aplicaciones basadas en Swift pueden dirigirse a OS X Mavericks o iOS 7 con esa misma aplicación.

Como es posible ?

Xcode incorpora una pequeña biblioteca de tiempo de ejecución Swift dentro del paquete de su aplicación . Debido a que la biblioteca está integrada, su aplicación utiliza una versión consistente de Swift que se ejecuta en versiones pasadas, presentes y futuras del sistema operativo.

¿Por qué debería confiar en esta respuesta?

Porque no estoy diciendo esta respuesta como me dijo un chico de manzana en Twitter o escribí hola mundo y lo probé.

Lo tomé del blog desarrollador de Apple .

para que puedas confiar en esto


Actualización - Según Xcode 6 Beta 4

Destino de implementación mínimo de iOS 7 y OS X 10.9

El compilador Swift y Xcode ahora imponen un objetivo de implementación mínimo de iOS 7 o OS X Mavericks. La configuración de un destino de implementación anterior produce un error de compilación

De Xcode 6 release note

Por lo tanto, mi respuesta anterior (mostrada a continuación) no será aplicable a ningún desarrollo posterior. Swift ya no estará disponible para iOS6 o inferior

Una aplicación Swift se puede ejecutar en iOS 6. Aunque mucha gente dice que Swift solo admitirá iOS 7+ y OS X 10.9+, según mi experiencia, no lo es.

He probado una aplicación simple escrita completamente en Swift en un dispositivo iOS 6. Funciona perfectamente bien . Como dice Apple, el código Swift es compatible binario con el código Objective-C. Utiliza el mismo compilador y tiempo de ejecución para crear el binario.

Aquí está el código que he probado:

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") } }

Es una aplicación simple, simplemente agregando un botón programáticamente. Mi aplicación contiene solo dos archivos, AppDelegate.swift y ViewController.swift .

Entonces, si no está utilizando ninguna nueva API agregada como parte del SDK de iOS 8 o alguna API específica de Swift (la API correspondiente no está disponible para Objective-C), su aplicación funcionará sin problemas en iOS 6 o posterior (probada y en funcionamiento), incluso en iOS 5 (no probado). La mayoría de las API en Swift son solo el reemplazo de las API existentes de Objective-C. De hecho son las mismas en binario.

Nota: Según Xcode 6 beta 4 para el destino de despliegue de aplicaciones Swift, debería ser iOS 7 o OS X 10.9 (consulte la actualización anterior). Tan rápido ya no estará disponible para iOS6 o inferior


Acabo de probarlo, las aplicaciones Swift se compilan en binarios estándar y se pueden ejecutar en OS X 10.9 y iOS 7.

Aplicación Swift simple utilizada para pruebas:

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 }


Actualización rápida, vigente desde el 15 de febrero de 2015 , no podemos enviar aplicaciones a la tienda que se desarrollaron utilizando un SDK antes de iOS 8 . Por lo tanto, teniendo esto en cuenta, es mejor no preocuparse por este problema, ya que muchas personas han sugerido que las aplicaciones creadas en Swift también se pueden implementar en OS X 10.9 y iOS 7.0 .


Apple ha anunciado que las aplicaciones Swift serán compatibles con versiones anteriores de iOS 7 y OS X Mavericks. La aplicación WWDC está escrita en Swift.


Cuando se trata de Swift Frameworks. En cuanto a hoy, con Xcode versión 6.1.1 (6A2008a), si el marco Swift está orientado a iOS 7.1, la advertencia del informe del vinculador

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

y la aplicación no se puede enviar a AppStore. Verifique este problema: Lint para evitar que las bibliotecas y los marcos dinámicos pasen con iOS 7


El código Swift se puede implementar en OS X 10.9 y iOS 7.0. Por lo general, se bloqueará en el lanzamiento en versiones anteriores del sistema operativo.


Esta es la publicación que leí del blog de Apple Swift, podría ser útil:

Compatibilidad de aplicaciones :

Si escribe una aplicación Swift, puede confiar en que su aplicación funcionará bien en el futuro. De hecho, puedes apuntar a OS X Mavericks o iOS 7 con esa misma aplicación. Esto es posible porque Xcode incorpora una pequeña biblioteca de tiempo de ejecución Swift dentro del paquete de su aplicación. Debido a que la biblioteca está integrada, su aplicación utiliza una versión consistente de Swift que se ejecuta en versiones pasadas, presentes y futuras del sistema operativo.

Compatibilidad binaria y frameworks:

Si bien la compatibilidad con el tiempo de ejecución de su aplicación está asegurada, el lenguaje Swift continuará evolucionando y la interfaz binaria también cambiará. Para estar seguros, todos los componentes de su aplicación deben construirse con la misma versión de Xcode y el compilador Swift para garantizar que funcionen juntos.

Esto significa que los marcos deben gestionarse con cuidado. Por ejemplo, si su proyecto usa marcos para compartir código con una extensión incrustada, querrá construir los marcos, la aplicación y las extensiones juntas. Sería peligroso confiar en marcos binarios que usen Swift, especialmente de terceros. Como Swift cambia, esos marcos serán incompatibles con el resto de tu aplicación. Cuando la interfaz binaria se estabilice en un año o dos, el tiempo de ejecución de Swift se convertirá en parte del sistema operativo host y esta limitación ya no existirá.


Las aplicaciones Swift son compatibles con iOS 7 y superiores como se indica en las notas de la versión Beta 4. iOS 6.0, 6.1, 7.0, 7.1, 8.0 en Xcode 6 Beta

Las aplicaciones Swift son compatibles con las plataformas OS X 10.9 y superiores . OS X 10.4 a 10.10 en Destino de Implementación. He probado en la orientación de 10.5 a 10.10, y funcionando en 10.9.3


Leí todas las respuestas que decían: No, Swift no funciona con menos de iOS 7. Pero dije , acabo de crear un proyecto Swift que se ejecuta en Xcode 5 con un destino de implementación de 6.0.

  • Acabo de crear un proyecto de demostración en Xcode 6 BETA con el lenguaje de programación Swift seleccionado.
  • Cerrar Xcode 6 beta, y abro este proyecto de demostración en Xcode 5 con el objetivo de implementación 6.0
  • Y también seleccionar simulador 6.1 .

Entonces ese proyecto funciona bien en el simulador 6.1 . Mi MacOS X es 10.9.3 , así que dije que sí, que funciona en una versión inferior a iOS 7. con 10.9.3 Mac OS X.

Aquí hay una captura de pantalla del simulador:

Aquí hay una demostración también


Mientras que el código lo confirma, la propia Apple ha dicho que Swift será compatible en iOS 7 y Mavericks en su nota técnica ( Estado de las plataformas , sesión 102, alrededor de la marca de 34 min 00 seg) en WWDC 2014 .


Parece que hay muchas respuestas antiguas aquí, así que solo quería publicar la respuesta oficial del equipo de Swift. Swift es compatible con versiones anteriores de OS X Mavericks y iOS 7

Blog de Swift para desarrolladores de Apple: ID de Objective-C como Swift Any

11 de julio de 2014

Compatibilidad

Una de las preguntas más frecuentes que escuchamos en WWDC fue: "¿Cuál es la historia de compatibilidad para Swift?". Esto parece ser un gran primer tema.

Compatibilidad de la aplicación En pocas palabras, si escribe una aplicación Swift hoy y la envía a la App Store este otoño cuando se lance iOS 8 y OS X Yosemite, puede confiar en que su aplicación funcionará bien en el futuro. De hecho, puedes apuntar a OS X Mavericks o iOS 7 con esa misma aplicación. Esto es posible porque Xcode incorpora una pequeña biblioteca de tiempo de ejecución Swift dentro del paquete de su aplicación. Debido a que la biblioteca está integrada, su aplicación utiliza una versión consistente de Swift que se ejecuta en versiones pasadas, presentes y futuras del sistema operativo.


Parece que las aplicaciones Swift no se ejecutan en OS X 10.7 . Acabo de crear una aplicación GUI simple (una vista, una etiqueta, un botón) que funciona bien en Mavericks. El SDK base se establece en 10.9 y el destino de implementación en 10.7. Copié esa aplicación de la carpeta DerivedData a mi máquina virtual 10.7, y se bloquea al iniciar, muestra este error:

Crashed Thread: 0 Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x0000000000000002, 0x0000000000000000 Application Specific Information: dyld: launch, loading dependent libraries Dyld Error Message: Library not loaded: /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics Referenced from: /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/../Frameworks/libswiftAppKit.dylib Reason: image not found Binary Images: 0x109c65000 - 0x109c6afff +private.Swift-Test (1.0 - 1) <649695D0-58FD-3D02-9176-2D40D4E711F2> /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/Swift-Test 0x109c83000 - 0x109dbffff +libswift_stdlib_core.dylib (1.0 - 600.0.34.4.5) <10AAC369-9404-321D-A892-49F65856D7AF> /Users/USER/Desktop/Swift-Test.app/Contents/Frameworks/libswift_stdlib_core.dylib ...

Sin embargo, este mensaje es irritante, ya que ciertamente hay una biblioteca CoreGraphics en esta máquina virtual. Otras aplicaciones que hacen un uso intensivo de CoreGraphics funcionan bien.


Probé ejecutar una aplicación Swift basada en Swift en un dispositivo iPod Touch (tercera generación). Parece que las aplicaciones basadas en Swift no funcionan con iOS 5.x, pero funcionan con iOS 6.x.

Esto es lo que aparece en el registro de depuración cuando intenté iniciar la aplicación de prueba con iOS 5.0.1:

dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib with errno=1 dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftCoreGraphics.dylib with errno=1 dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDarwin.dylib with errno=1 dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDispatch.dylib with errno=1 dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftFoundation.dylib with errno=1 dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftObjectiveC.dylib with errno=1 dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftUIKit.dylib with errno=1 dyld: Symbol not found: _OBJC_CLASS_$_NSObject Referenced from: /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib Expected in: /usr/lib/libobjc.A.dylib in /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib

Para iOS 6.1.6, la aplicación funciona bien sin mostrar esos mensajes de error.


Prueba el siguiente código:

Está funcionando sin 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 }


Sí, de hecho, Apple ha anunciado que las aplicaciones Swift serán compatibles con versiones anteriores de iOS 7 y OS X Mavericks. Además, la aplicación WWDC está escrita en el lenguaje de programación Swift.


Swift usa el mismo tiempo de ejecución que Objective-C e incluso puede vivir de forma conjunta Objective-C en la misma aplicación (según la nota clave de la WWDC 2014).

Será necesario verificar / verificar esto utilizando Xcode 6 y el nuevo SDK para encontrar una respuesta final.


También probé una aplicación muy simple en 10.8 (un botón, establece texto en una etiqueta). Se estrelló en el inicio, como Greg Parker declaró:

Dyld Error Message: Symbol not found: __dispatch_source_type_memorypressure Referenced from: /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib Expected in: /usr/lib/libSystem.B.dylib in /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib

(Esto estaba usando un destino de despliegue de 10.7)