Idioma

Fuga de memoria


Como Ingeniero de Software, definitivamente has escuchado sobre el concepto de fuga de memoria. La fuga de memoria es una situación donde los bloques de memoria están ubicados por el programa y permanecen en la memoria a pesar de que ya no están referenciados. Las fugas desperdician espacio llenando páginas de memoria con datos inaccesibles. Como resultado, el tamaño de memoria usado en tus aplicaciones sigue aumentando, afectando la experiencia del usuario y el rendimiento de tu aplicación. Peor aún, tu aplicación se cerrará aleatoriamente porque un proceso será terminado por el sistema si consume demasiada memoria.
En este tema, discutiremos cómo se gestiona la memoria en iOS y cómo usar la memoria eficientemente. Continúa leyendo.

Leer más

Mejores prácticas: iBeacon


Bienvenido a la siguiente parte de la serie de “Cómo manejar BLE en segundo plano“.
En la parte anterior, te guié sobre cómo mantener tu aplicación viva el mayor tiempo posible cuando tu aplicación entra en modo de segundo plano usando la técnica State Preservation and Restoration soportada por Apple. Sin embargo, hay algunos casos de uso que esta técnica no puede manejar, como se describe a continuación (referencia al documento de Apple: Conditions Under Which Bluetooth State Restoration Will Relaunch An App)

Como puedes ver, hay un caso común cuando los usuarios fuerzan el cierre de la aplicación desde la vista de tareas múltiples (Ya sea accidentalmente o intencionalmente), la técnica de Restoration no puede despertar tu aplicación. Imaginemos que tu aplicación tiene una función que permite a los usuarios presionar un botón en sus dispositivos conectados por BLE para encontrar dónde está su teléfono, pero si tu aplicación no se está ejecutando o no puede despertarse para manejar la señal BLE enviada desde tus dispositivos, esta función sería inútil.
En esta publicación, te mostraré una técnica usando iBeacon para lidiar con este caso, que le da a tu aplicación otra oportunidad de despertarse aunque haya sido terminada por los usuarios. ¡Vamos a sumergirnos!

Leer más

Mejores prácticas: Cómo manejar Bluetooth Low Energy en segundo plano

Prefacio

Cuando trabajas con CoreBluetooth, ¿alguna vez te has preguntado cómo la aplicación BLE en iOS puede sobrevivir cuando es terminada por el sistema? ¿Cómo podemos traerla de vuelta al segundo plano? ¿Hay algo como un servicio en Android que pueda durar para siempre? Puedes encontrar la respuesta a todas estas preguntas en esta publicación. ¡Sigue leyendo!

Leer más

Trabajando con Thread Safe en iOS


Como ya sabes, el termino “Thread safe” se refiere a un concepto de ciencias de la computacion en el contexto de programas multi-hilo. Un codigo se llama “Thread safe” si cualquier dato compartido es accedido por solo un hilo en cualquier momento dado. Ten en cuenta que estos datos compartidos se llaman secciones criticas en un sistema operativo.
El punto es que los tipos de coleccion de Swift como Array y Dictionary no son thread-safe cuando se declaran como mutables (con la palabra clave var).
En esta publicacion, discutiremos algunas tecnicas para hacer nuestro codigo thread safe en iOS.

Leer más

Big Endian vs Little Endian


En ciencias de la computacion, un bit es la pieza de informacion mas pequena. Representa un digito del sistema numeral binario. Una cadena de 8 bits se llama un byte. Hay dos formas de almacenar una cadena de datos en computadoras: Big Endian y Little Endian. Si tus tareas trabajan con datos en piezas de bytes, debes saber como tratar con bytes en estos dos formatos. En este articulo, explicare como se almacenan los datos en las computadoras, cuales son las principales diferencias entre estos dos, y luego proporcionare algo de codigo util para trabajar con bytes en Swift y Objective-C.

Leer más

Desempeñar Roles de Central y Periférico con CoreBluetooth

Introducción


Como mencioné en la publicación anterior, CoreBluetooth nos permite crear aplicaciones que pueden comunicarse con dispositivos BLE como monitores de frecuencia cardíaca, sensores corporales, rastreadores o dispositivos híbridos.
Hay dos roles a desempeñar en los conceptos de CoreBluetooth: Central y periférico.

  • Central: Obtener datos de los periféricos.
  • Periférico: Publicar datos para ser accedidos por un central. Podemos hacer que un dispositivo Bluetooth actúe como periférico desde el lado del firmware o del software.

En esta publicación, te mostraré cómo crear un periférico usando nuestros propios identificadores. También usaremos otro dispositivo, como central, para conectar y explorar nuestros servicios. Comencemos.

Leer más

Programación Asíncrona en Swift

Promise Kit, uno de los mejores frameworks para manejar programación asíncrona en Swift

En esta publicación, usaré las siguientes librerías de terceros para completar el proyecto:

  • Alamofire: Un framework de redes HTTP en Swift.
  • SwiftyJSON: Para procesar datos JSON.
  • SwiftGifOrigin: Una extensión de UIImage para mostrar archivos Gif.
  • Bolts-Swift: Fue diseñado por Parse y Facebook, lo uso para crear métodos asíncronos.
  • PromiseKit: Un framework que nos ayuda a simplificar la programación asíncrona.
  • APIs de Giphy para buscar y descargar imágenes gif.
Leer más