Swift es un lenguaje de programación para aplicaciones iOS, OS X, watchOS y tvOS que coge lo mejor de C y Objective-C, sin las limitaciones de compatibilidad del propio C. Swift adopta las plantillas de programación seguras y añade modernas características con el objetivo de facilitar la programación. Debido a esto, programar en Swift se convierte en algo agradable y sobre todo, divertido. Es una buena oportunidad, mediante este artículo, aprovechar para ver como funciona Swift.
Desarrollar un framework personalizado que incluya tanto código de ObjC como de Swift es muy sencillo, porque Apple provee de un mecanismo para distribuir código vía frameworks (eventualmente, para iOS también). El próximo paso en el desarrollo es la creación de un módulo en Swift puro, tal y como lo hace Apple con std lib y el puente de Cocoa/Cocoa Touch.
Básicamente, generaremos un modulo simple llamado Logger que contendrá un solo método: Log. Necesitas al menos tres ficheros para crear un módulo de Swift, por lo que debemos obtenerlas todas como salida:
- Logger.swiftmodule – Interfaz pública / definiciones
- Logger-swiftdoc – Documentación
- libLogger.a – Librería (también puede ser un dylib, eso ya depende de tus menesteres)
Podemos empezar creando una librería Logger que no sirva para nada, tal que así:
class Logger { var prefix: String init(_ prefix: String) { self.prefix = prefix; } func log(object: T) { print(prefix) println(object) } }
La clase solo coge el prefijo y lo imprime antes del objeto actual.
var logger = Logger("> ") logger.log("Hola Mundo")
Ahora vamos a crear el liblogger.a. El código sería similar a esto
xcrun swift -emit-library -emit-object Logger.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name Logger ar rcs libLogger.a Logger.o
-emit-library genera dinámicamente un enlace a una librería compartida, mientras que -emit-object genera el archivo del objeto e incluye la función main, por lo que obtendrás errores de enlace debido a los símbolos duplicados. La solución para dicho error es simple, inclúyelos a ambos, -emit-object y -emit-library, como hemos visto en el código anterior.
Vamos ahora con la creación de Logger.swiftdoc y el Logger.swiftmodule:
xcrun swift -emit-module Logger.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name Logger
Ahora que tienes el módulo completo, es hora de integrarlo en un proyecto real. Crea un proyecto simple en Swift y añade los ficheros. Después establece los “Import Paths” para Swift. Ahora ya puedes comprobar si el módulo funciona correctamente en tu proyecto.
import Foundation import Logger var logger = Logger("> ") logger.log("Hola")
Voila!
> Hola
Añadir documentación en Swift es un proceso muy sencillo. Solo tenemos que añadir los caracteres /// para comentar alguna línea de código, o bien para documentar nuestro código. Por ejemplo:
/// Simple Logger /// /// Se añade un prefijo string al objeto enviado en el constructor /// class Logger
{
var prefix: String
init(_ prefix: String)
{
self.prefix = prefix;
}
func log(object: T)
{
print(prefix)
println(object)
}
}
Si quieres que funcione después de integrarlo, acuérdate de reiniciar Xcode.
Este enfoque no podría aplicarse en un desarrollador experimentado de iOS / OSX; requiere la creación y el soporte de ficheros Make/CMake, lo que complica el proceso de generación. Sin embargo, puede ser útil si deseas crear un módulo que no incluya nada de código ObjC.
Y este ha sido el artículo en el que trataba cómo crear un módulo en Swift. Ya sabes que si nos quieres proponer un tema que quieres ver reflejado como un tutorial o como una práctica, solo tienes que hacer uso del área de comentarios de un poco más abajo. Por el contrario, si quieres enviarnos tus propios tutoriales, puedes hacerlo a través de la intranet de usuarios que está habilitada para ello, a través del menú Enviar Tutorial. Ya sabes, ayúdanos a crecer con tus conocimientos. ¡Un saludo y feliz código!