TECNOLÓGICO NACIONAL
DE MEXICO
INSTITUTO TECNOLÓGICO
DE IGUALA
INGENIERIA EN INFORMÁTICA
PROFESOR: JERONIMO RAMIREZ
TERRONEZ
ALUMNO: FRANCISCO ALEJANDRO
GUZMAN SANTANA
GRUPO: U AULA: E-7
SEMESTRE:6
PROGRAMACION PARA APPLEIOS
Fundamentos de la programación para IOS
¿Qué es una aplicación web?
Se trata de las aplicaciones normales desarrolladas en HTML + CSS + JavaScript,
que corren del lado del servidor y son vistas en el navegador Safari. Dichas
aplicaciones pueden ser desarrolladas en PHP, NET, Java, etc y generar el código
HTML necesario para poder ver nuestra aplicación corriendo en el Iphone. Con
CSS ya podemos darle el toque final para que sea muy similar a una aplicación de
escritorio.
¿Qué es una aplicación nativa?
Los usuarios de iphone ya vienen acostumbrados a este tipo de aplicaciones, en
realidad son todas aquellas que fueron descargadas desde AppStore y fueron
instaladas directamente en el dispositivo, a ello se le suma que no es necesario
tener una conexión a internet ya que estas no corren en el navegador. Estas
aplicaciones son desarrolladas con el SDK de Iphone: xCode en Objective C.
Diferencias y ventajas
Al desarrollar aplicaciones web, no dependes de Apple para su distribución y más
aún para su aprobación. Sin embargo, al crear una aplicación nativa, tienes
acceso al API del iphone y poder por ejemplo usar el acelerómetro, la cámara el
GPS, etc. Una aplicación nativa requiere conocimientos de Objective C y para
crear una aplicación web no es necesario.
¿Qué programas se usan regularmente?
Cocoa Touch
Como ya mencionamos, Cocoa Touch es el API para el desarrollo de aplicaciones
orientado a objetos. Esta incluse a su vez 3 frameworks que usaremos para poder
trabajar con el iphone:
UIKit, que proporciona todos los elementos gráficos para nuestra aplicación
mediante interfaces a su framework.
Foundation Framework, es el conjunto de clases que utiliza para representar
estructuras de datos complejas.
Address Book UI Framework, nos ayuda a acceder a los datos de nuestros
contactos.
Objective C
Es un lenguaje de programación basado en C, y que ha sido modificado para
poder trabajar orientado a objetos, con lo cual puedes crear clases, objetos,
variables de instancias, métodos, encapsulación, etc.
Interface builder
Interface Builder es una aplicación de desarrollo de software para el sistema
operativo macOS de Apple. Forma parte de Xcode (anteriormente Project Builder),
el conjunto de herramientas para desarrolladores de Apple Developer. Interface
Builder permite a los desarrolladores de Cocoa y Carbon crear interfaces para
aplicaciones usando una interfaz gráfica de usuario. La interfaz resultante se
almacena como un archivo. nib, abreviatura de NeXT Interface Builder, o más
recientemente, como un archivo. xib basado en XML.
Interface Builder desciende del software de desarrollo NeXTSTEP del mismo
nombre. También se usa una versión de Interface Builder en el desarrollo del
software OpenStep, y existe una herramienta muy similar llamada Gorm para
GNUstep. El 27 de marzo de 2008, se lanzó una versión para iPhone
especializada de Interface Builder que permite la construcción de interfaces para
aplicaciones de iPhone con el iPhone SDK Beta 2.
Interface Builder fue desarrollado intencionalmente como una aplicación separada,
para permitir a los diseñadores de interacción diseñar interfaces sin tener que usar
un IDE orientado a códigos, pero a partir de Xcode 4, Apple ha integrado su
funcionalidad directamente en Xcode.
Manejo de memoria
La memoria real o principal es en donde son ejecutados los programas y procesos
de una computadora y es el espacio real que existe en memoria para que se
ejecuten los procesos.
De acuerdo con la documentación de Apple, las dos cuestiones principales en la
gestión de memoria son:
Liberando o sobrescribir los datos que todavía está en uso. Provoca daños en la
memoria.
No liberar datos que ya no está en uso provoca pérdidas de memoria. Cuando la
memoria asignada no se libera a pesar de que nunca va a volver a usar, se
conoce como pérdida de memoria. Apple Inc. implementa ARC en sus sistemas
operativos, como macOS (OS X) e iOS. Como ya sabemos el lenguaje de
programación utilizado en Apple es el lenguaje C u Objetive C, estos lenguajes
tenían una gestión de memoria manual, es decir, el programador quitaba o dejaba
espacios de memoria según convenía. Cuando el sistema operativo instanciaba un
objeto nuevo lo que hacía era reservar y ocupar un espacio de memoria.
Pero antes, debíamos tener en cuenta esta manipulación de la memoria, ya que, si
destruimos un objeto, debíamos liberar ese espacio en la memoria para no
acumular “basura”. Eso ahora es automático y lo hace Xcode con el ARC, que es
un sistema de gestión de la memoria. Esto optimiza al sistema operativo en un
porcentaje muy elevado.
Xcode fue la herramienta que dio paso a la gestión de memoria más eficaz con la
ayuda implementada de ARC (Automatic Reference Counting), es una función de
gestión de memoria del compilador Clang que proporciona recuentos de referencia
automáticos para los lenguajes de programación Objective-C y Swift
View Controllers
El funcionamiento interno de una aplicación iOS diseñada con MVC podría ser
este:
Un usuario actúa sobre la interfaz de nuestra app, pulsando uno de los
botones.
La View de nuestra app comunica al Controller que el usuario ha
realizado la acción de pulsar el botón.
El Controller ejecuta la lógica asociada a esa acción.
Si esa lógica está asociada a modificaciones de los datos de la aplicación,
el Controller actualiza el Model.
Como el Controller ha modificado el modelo, es probable que haya que
actualizar la View que muestra esos datos al usuario, por lo que
el Controller actualiza también la View para mostrar los nuevos datos.
Instanciar controladores y vistas
Podemos hacerlo de varias formas. De más sencilla a más compleja (pero también
más flexible)
Gráficamente, con storyboards: tanto las vistas como el controlador están en el
storyboard
Gráficamente, con. nib: en cada archivo nib guardamos una pantalla (con su
jerarquía de vistas), pero no el controlador, que se crea por código
Totalmente por código: tenemos que instanciar el controlador y en su método
loadView crear la jerarquía de vistas que queremos que contenga (UIView,
UIButton, lo que sea) y asignar la raíz de la jerarquía de vistas a self.view.
En los siguientes apartados vamos a ver cada una de estas posibilidades con algo
más de detalle.
Storyboards
Desde Xcode 5 los storyboards son la forma recomendada por Apple de crear
interfaces de usuario. Un storyboard contiene la representación gráfica de las
“pantallas” (los controladores) que componen nuestra aplicación y de las
relaciones entre ellas. Además, el sistema se encarga automáticamente de
moverse por las pantallas cuando sucedan determinados eventos, instanciando
los controladores y las vistas automáticamente.
El controller inicial
En cada momento habrá un view controller inicial que es el que se muestra
cuando se carga la aplicación.
Navigation Controllers:
Un controlador de navegación administra una pila de controladores de vista para
proporcionar una interfaz de desglose para contenido jerárquico. La jerarquía de
vistas de un controlador de navegación es independiente. Se compone de vistas
que el controlador de navegación administra directamente y vistas administradas
por los controladores de vista de contenido que usted proporciona. Cada
controlador de vista de contenido gestiona una jerarquía de vista distinta, y el
controlador de navegación coordina la navegación entre estas jerarquías de vista.
Aunque una interfaz de navegación se compone principalmente de su contenido
personalizado, todavía hay lugares donde su código debe interactuar directamente
con el objeto del controlador de navegación. Además de decirle al controlador de
navegación cuándo mostrar una nueva vista, usted es responsable de configurar
la barra de navegación, la vista en la parte superior de la pantalla que proporciona
contexto sobre el lugar del usuario en la jerarquía de navegación. También puede
proporcionar elementos para una barra de herramientas administrada por el
controlador de navegación.
Este capítulo describe cómo configura y usa los controladores de navegación en
su aplicación. Para obtener información sobre las formas en que puede combinar
los controladores de navegación con otros tipos de objetos de controlador de vista,
consulte Interfaces de controlador de vista combinada.
Table Views:
Las vistas de tabla se encuentran entre los componentes más utilizados del
framework UIKit y son parte integral de la experiencia del usuario en la plataforma
iOS. Las vistas de tabla hacen una cosa y lo hacen muy bien, presentan una lista
ordenada de elementos. La clase UITableView es un buen lugar para continuar
nuestro viaje a través del framework UIKit, porque combina varios conceptos clave
de Cocoa Touch y UIKit, que incluyen vistas, protocolos y reutilización.
Data Persistence:
La persistencia de datos es el mecanismo para almacenar cualquier tipo de datos
en el disco para que los mismos datos puedan recuperarse sin ser alterados
cuando el usuario abra la aplicación la próxima vez. Si bien podría guardar los
mismos datos en un servidor, en este tutorial describiremos todas las formas de
almacenar datos localmente en aplicaciones iOS.
La persistencia de datos entre los lanzamientos de aplicaciones es un requisito
que tienen la mayoría de las aplicaciones de iOS, desde el almacenamiento de las
preferencias del usuario en el sistema predeterminado hasta la administración de
grandes conjuntos de datos en una base de datos relacional. En este artículo,
exploraremos las estrategias más comunes utilizadas para almacenar datos en
una aplicación de iOS. También hablaré sobre el sistema de archivos en iOS y
cómo el sandboxing de la aplicación afecta la persistencia de los datos.
Sistema de archivos y aplicación de espacio aislado
La seguridad en la plataforma iOS ha sido una de las principales prioridades de
Apple desde que se introdujo el iPhone en 2007. A diferencia de las aplicaciones
OS X, una aplicación iOS se coloca en un entorno limitado de aplicaciones. La
zona de pruebas de una aplicación no solo se refiere al directorio de la zona de
pruebas de una aplicación en el sistema de archivos. También incluye acceso
controlado y limitado a los datos del usuario almacenados en el dispositivo,
servicios del sistema y hardware.
Con la presentación de la Mac App Store, Apple también ha comenzado a aplicar
el sandboxing de aplicaciones en OS X. Aunque las restricciones impuestas a las
aplicaciones OS X no son tan estrictas como las que se aplican a las aplicaciones
iOS, el concepto básico es similar. Hay diferencias, sin embargo. El entorno
limitado de la aplicación de una aplicación iOS, por ejemplo, contiene el paquete
de aplicaciones, que no es cierto para las aplicaciones OS X. Las razones de
estas diferencias son principalmente históricas.
Conclusión:
Con todo lo que anteriormente se menciono llegue a 2 conclusiones. La primera es
que la programación para IOS definitivamente tiene mas requerimientos que las
destinadas para Android y la segunda es que todo lo antes mencionado no se
puede resumir mas debido a que cada tema tiene muchos subtemas como
trasfondo y es imposible destacar cada punto de este mundo de programación
móvil
Referencias:
Attention Required! | Cloudflare. (s.f.). Recuperado 27 marzo, 2020, de
https://code.tutsplus.com/es/tutorials/ios-from-scratch-with-swift-data-persistence-
and-sandboxing-on-ios--cms-25505
Team Cristalab. (s.f.). Fundamentos de programación para iPhone. Recuperado
27 marzo, 2020, de http://www.cristalab.com/tutoriales/fundamentos-de-
programacion-para-iphone-c260l/
Gestion de memoria: iOS. (2017, 30 noviembre). Recuperado 27 marzo, 2020, de
http://sistema-ios.blogspot.com/2017/11/gestion-de-memoria-ios.html
[controles de navegador]. (s.f.). Recuperado 27 marzo, 2020, de
https://developer.apple.com/library/archive/documentation/WindowsViews/
Conceptual/ViewControllerCatalog/Chapters/NavigationControllers.html
Attention Required! | Cloudflare. (s.f.). Recuperado 27 marzo, 2020, de
https://code.tutsplus.com/es/tutorials/ios-from-scratch-with-swift-table-view-basics--
cms-25160