¿Funcionarán las aplicaciones basadas en Swift en OS X 10.9 (Mavericks) / iOS 7 y versiones anteriores?
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.
¿O qué debería tener para crear una aplicación Swift con Mac OS?
Respuestas:
Lo acabo de probar para usted, las aplicaciones Swift se compilan en binarios estándar y se pueden ejecutar en OS X 10.9 e iOS 7.
Aplicación Swift simple utilizada para pruebas:
fuente
UIViewController
después de los dos puntos representa el tipo de la variable y la segunda aparición después de que el=
signo llama al constructor (inicializa la variable).El código Swift se puede implementar en OS X 10.9 e iOS 7.0. Por lo general, se bloqueará en el lanzamiento en versiones anteriores del sistema operativo.
fuente
Apple ha anunciado que las aplicaciones Swift serán compatibles con iOS 7 y OS X Mavericks. La aplicación WWDC está escrita en Swift.
fuente
Actualización: según Xcode 6 Beta 4
De la nota de lanzamiento de Xcode 6
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 y versiones inferiores
Una aplicación Swift se puede ejecutar en iOS 6. Aunque muchas personas dicen que Swift solo admitirá iOS 7+ y OS X 10.9+, desde 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 binario compatible 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:
Es una aplicación simple, solo agrega un botón mediante programación. Mi aplicación contiene solo dos archivos
AppDelegate.swift
yViewController.swift
.Entonces, si no está utilizando ninguna nueva API agregada como parte del SDK de iOS 8 o algunas API específicas de Swift (la API correspondiente no está disponible para Objective-C), su aplicación funcionará sin problemas en iOS 6 o posterior (probado y funcionando), 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 lo mismo en binario.
Nota: Según Xcode 6 beta 4 para el objetivo de implementación de aplicaciones rápidas, debe ser iOS 7 u OS X 10.9 (consulte la actualización anterior). Así que Swift ya no estará disponible para iOS6 y versiones inferiores
fuente
En breve:
Las aplicaciones basadas en Swift pueden dirigirse de nuevo 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á incrustada, 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 Apple en Twitter o escribí hola mundo y lo probé.
Lo tomé del blog de desarrolladores de Apple .
para que puedas confiar en esto.
fuente
Swift usa el mismo tiempo de ejecución que Objective-C e incluso puede vivir lado a lado Objective-C en la misma aplicación (según la nota clave de WWDC 2014).
Esto deberá verificarse / verificarse utilizando Xcode 6 y el nuevo SDK para encontrar una respuesta final.
fuente
Leí todas las respuestas que decían: No, Swift no funciona con menos de iOS 7. Pero dije SÍ , acabo de crear un proyecto Swift que se ejecuta en Xcode 5 con un objetivo de implementación 6.0.
Entonces ese proyecto funciona bien en el simulador 6.1 . Mi MacOS X es 10.9.3 , así que dije que sí, que se ejecuta 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
fuente
Si bien el código lo confirma, la propia Apple ha dicho que Swift será compatible con iOS 7 y Mavericks en su nota técnica ( Estado de las plataformas , sesión 102, alrededor de la marca de 34 min 00 segundos) en WWDC 2014 .
fuente
Las aplicaciones Swift son compatibles con iOS 7 y superior 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 BetaLas 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 en 10.9.3fuente
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 objetivo de implementación en 10.7. Copié esa aplicación desde la carpeta DerivedData a mi máquina virtual 10.7, y se bloquea al iniciar, muestra este error:
Sin embargo, este mensaje es irritante, ya que ciertamente hay una biblioteca CoreGraphics en esta VM. Otras aplicaciones que hacen un uso intensivo de CoreGraphics funcionan bien.
fuente
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, puede volver a 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á incrustada, 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 marcos:
Si bien la compatibilidad de tiempo de ejecución de su aplicación está asegurada, el lenguaje Swift seguirá evolucionando y la interfaz binaria también cambiará. Para estar seguro, 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 juntos. Sería peligroso confiar en marcos binarios que usan Swift, especialmente de terceros. A medida que Swift cambia, esos marcos serán incompatibles con el resto de su aplicación. Cuando la interfaz binaria se estabiliza en uno o dos años, el tiempo de ejecución Swift se convertirá en parte del sistema operativo host y esta limitación ya no existirá.
fuente
Probé con una aplicación 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 sí 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:
Para iOS 6.1.6, la aplicación funciona bien sin mostrar esos mensajes de error.
fuente
Parece que hay muchas respuestas antiguas aquí, así que solo quería publicar la respuesta oficial del equipo Swift. Swift es compatible con versiones anteriores de OS X Mavericks y iOS 7
Blog rápido de desarrolladores de Apple: Id. De Objective-C como Swift Any
11 de julio de 2014
Compatibilidad
Una de las preguntas más comunes que escuchamos en WWDC fue: "¿Cuál es la historia de compatibilidad para Swift?". Este parece ser un gran primer tema.
Compatibilidad de aplicaciones En pocas palabras, si escribe una aplicación Swift hoy y la envía a la App Store este otoño cuando se lanzan iOS 8 y OS X Yosemite, puede confiar en que su aplicación funcionará bien en el futuro. De hecho, puede volver a 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á incrustada, su aplicación utiliza una versión consistente de Swift que se ejecuta en versiones pasadas, presentes y futuras del sistema operativo.
fuente
También probé una aplicación muy simple en 10.8 (un botón, establece el texto en una etiqueta). Se bloqueó en el inicio, como Greg Parker declaró:
(Esto estaba usando un objetivo de implementación de 10.7)
fuente
Prueba el siguiente código:
Funciona sin StoryBoard:
fuente
Sí, de hecho, Apple ha anunciado que las aplicaciones Swift serán compatibles con iOS 7 y OS X Mavericks. Además, la aplicación WWDC está escrita en el lenguaje de programación Swift.
fuente
Cuando se trata de marcos rápidos. En cuanto a hoy, con Xcode versión 6.1.1 (6A2008a), si el marco Swift está dirigido a iOS 7.1, advertencia de informe de enlace
y la aplicación no se puede enviar a AppStore. Verifique este problema: Lint para evitar que las bibliotecas dinámicas y los marcos pasen con iOS 7
fuente
Mach-O Type
debe serDynamic Library
, sin embargo, iOS 7Static Library
solo acepta .Actualización rápida, vigente a partir del 15 de febrero de 2015 , no podemos enviar aplicaciones a la tienda que se desarrollaron utilizando un SDK anterior a iOS 8 . Entonces, 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 e iOS 7.0 .
fuente
El fragmento de código respondido publicado por Leandros parece un poco viejo. Lo arreglé y lo hice compilable en Swift 5.
Swift 5
fuente