Fernando Alfredo Fabián Garcia
Programación con Objetive-C
1.- G Nustep
Es un entorno de dearrollo que originalmente nació con la intención de ofrecer una alternativa libre a
las librerías del sistema operativo NeXTstep. En 1994 la empresa NeXT libera al publico las
especificaiones OpenSteo, abriendo con ello la posibilidad de crear una implementación libre de estas.
Es cuando Paul kunz y otros en el Stanford Linear Accelerator Center, deciden crear la librería
libobjX, software que sería la base de lo que actualmente se conoce como GNUstep. GNU debido al
proyecto de la Free Software Foundation al cual pertenece GNUstep. Posteriormente la empresa NeXT
sería comprada por Apple, la cual basaría su entorno de desarrollo Cocoa en las especificaciones
OpenStep. De allí que GNUstep tenga ka compatibilidad con el sistema operativo Mac OS X.
GUNstep permite el desarrollo de aplicaciones para sistemas GNU/Linux, *BSD, GNU/Hurd, Solari,
Darwin, Mac OS X, y Windows. Asimismo es una plataforma de desarrollo cruzada. Lo que significa
que utilizando el mismo código se pueden desarrollar aplicaciones que funcionen en diferentes sistemas
operativos y arquitecturas.
2.- Los lenguajes de programación
Los lenguajes de programación son idiomas artificiales diseñados para expresar cálculos y procesos
que serán llevados a cabo por ordenadores. Un lenguaje de programación está formado por un conjento
de palabras reservadas, símbolos y reglas sintácticas y semánticas que definen su estructura y el
significado de sus elementos y expresiones. El proceso de programación consiste en la escritura,
compilación y verificación del código fuente de un programa.
La plataforma de Java
Los programas Java se compilan a un lenguaje intermedio, denominado Bytecode. Este código es
interpretado po la máquina virtual de Java del entorno de ejecucion (JRE) y así se consigue la
portabilidad en distintas plataformas. El JRE es una pieza intermedia entre el código Bytecode y los
distintos sistemas operativos existentes en el mercado.
Una de las características más importantes de los lenguajes de programación modernos es la
portabilidad. Un programa es portable cuando es independiente de la plataforma y puede ejecutarse en
cualquier sistema operativo y dispositivo físico. Los programas Java son portables porque se ejecutan
en cualquier plataforma. Sucede algo parecido con las fotografías con formato JPEG son portable
poqur un archivo JPEG lo podemos visualizar con distintos visores de fotos y en dispositivos como
ordenadores, tabletas o teléfonos. El formtao JPEG es un estándar para almacenar archivos de imagen.
Todas las imágenes JPEG tiene el mismo formato y los visores de foto están diseñados para mostar las
imágenes con este formato. De forma similar, los archivos PDF (portable Document Format) son
portables. El formato PDF fue desarrollado por Adobe Systeme con la idea de que estos archivos se
puedenver en cualuier dispositivoque tengaa instalado Adobe Acrobat Reader, el sofware de
visualización de documentos PDF.
La portabilidad de Java ha contribuido a que muchas empresa hayan desarrollado sus sitemas de
comercio electrónico y sus sistemas de información en Internet con Java. El proceso de desarrollo y de
mantenimiento de los sistemas resulta menos costosos y las aplicaciones son compatible con distintos
sistemas operativos.
La evolución del lenguaje de programación Java ha sido muy rápida. La plataforma de desarrollo de
Java, deniminada Java Development Kit (JDK), se ha ido ampliando y cada vez incorpora a un número
mayor de programas en todo el mundo. En realidad Java no solo es un lenguaje de programación. Java
es un lenguaje, una plataforma de desarollo, un entorno de ejecución y un conjunto de librerías para
desarrollo de programas sofisticados. Las librerías para desarrollo se denominan Java Application
Programming Interface (Java API).
Entornos de desarrollo para Java
Existen distintos entornos de desarrollo de aplicaciones Java. Este tipo de productos ofrecen al
programador un entorno de trabajo integrado para facilitar el proceso completo de desarrollo de
aplicaciones, desde el diseño la programación, la documentación y la verificacion de los programas.
Estos productos se denominan IDE (integrated Development Environment.)
Para utilizar un entorno de desarrolo es necesario isntalar el Java Runtime Environment (JRE)
apropiado para el sistema operativo. El JRE se descarga de la página de Oracle Java.
El proceso de edición y compilación
En java, al igual que en otros lenguajes de programacion, se sigue el siguiente proceso: edición del
código fuente, compilación y ejecución. Los programas Java se desarrollan y se compilan para obtener
un código denominado Bytecode que es interpretado por una máquina virtual de Java (Java Virtual
Machine)
la edición del programa fuente se realiza escribiendo el programa Java en un editor de texto como el
Bloc de notas o utilizando un entorno integrado de desarrollo. El código fuente se almacena en un
fichero de tipo .java
La compilación se realiza con el compilador Java javac o utilizando un entorno integrado de desarrollo.
Durante el proceso de compilación se verifica que el código fuente cumple la definición léxica,
sintáctica y semántica de Java. Esto significa que el compilador comprueba que el código fuente se
compone de palabras válidas en Java y que los comandos Java tiene la forma sintáctica correcta. Si
durante el proceso de compilación el compilador detecta los errores que ha cometido el programador y
le informa de los problemas que ha encontrado para que pueda corregirlos. Si durante la compilación
no se detectan errores, se genera un fichero de tipo class en Bytecode. Una vez finbalizado el proceso
de compilación se puede ejecutar el programa. Para esto, es necesario que la máquina virtual de Java
interprete el código Bytecode y ejecute la aplicación.
Los codificadores de programas Java.
El estilo de programación o codificaciónde los programas Java es muy importante. La legibilidad de un
programa determina en buena medida que se haya desarrollado correctamente y que el producto final
sea eficiente.
Legibilidad > Correción > Eficiencia
Legibilidad: un programa de Java debe ser fácil de leer y enteder, incluso para una persona que no ha
participado en el desarrollo del programa, es un aspecto muy importante porque facilita el
mantenimiento de software, la correción de errores o la modificación de la funcionalidad de la
aplicación con menor coste.
Correción: un programa debe hacer lo que debe hacer, ni más, ni menos. Esto es lo que se entiende
por corrección. Un programa debe cumplir rigurosamente los requisitos funcionales y técnicos de la
fase de especificación. Durante la fase de prueba se verifica que el programa funciona corretamente y
que cumple los requisitos técnicos y funcionales.
Eficiencia: se refiere al tiempo que un programa tarda en ejecutarse y a los recursos que consume.
Cuanto más rápido sea un programa y utilice menos memoria o disco duro, el diseño es mejor. La
eficiencia no es un problema que deba atender cuando se aprende a programar. Ahora lo mejro es
utilizar mecanismos de optimización propios de los complidaores. La eficiencia se debe analizar solo
cuando un programa funciona correctamente y cumple con los requisitos técnicos definidos.
El proceso de desarrollo de software.
El proceso de desarrollo de los programas Java no difiere de la mayoría de los lenguajes de
programación. Es necesario seguir un conjunto de pasos para desarrollar correctamente un producto
software.
La Ingeniería del Software estudia los distintos procesos de desarrollo de Software. El IEEE define
Ingeniería del Software como la aplicación sistematica, disciplinada y cuantificable de un proceso de
desarrollo, operación y mantenimiento de un producto software.
El proceso clásico de desarrollo de software es ampliamente utilizado por su sencillez. Este proceso se
compone de las siguientes fases: especificación, diseño, codificación, prueba y mantenimiento.
Especificación: en esta fase se decide la funcionalidad, las características técnicas de una aplicación y
sus condiciones de uso. En esta fase es necesario responder a las siguientes preguntas:
• ¿para qué se va a utilizar la aplicación?
• ¿cuáles son las necesidades funcionales de los usuarios?
• ¿cuál es el perfil de los usuarios de la aplicación?
• ¿en qué plataforma se ejecutará la aplicacion?
• ¿cuáles son sus condiciones de operación?
• ¿cuáles son las formas de censura de la operación?
• ¿cuales son las bases de la aplicación?
• ¿por qué usa tan poca memoria ram?
Todo el sistema tiene como base el uso de la memoria ram lo basico seria que solo uso 512 mb pero por
lo general la gente seguie usando el 100% de este programa.
Historia
Objective-C es un lenguaje de programación orientado a objetos que se ha utilizado durante muchos
años en el desarrollo de aplicaciones para la plataforma Apple. Fue desarrollado a principios de la
década de 1980 por Brad Cox y Tom Love como un superconjunto de C, y se ha mantenido en
constante evolución desde entonces.
La historia de Objective-C se remonta a 1983, cuando Brad Cox desarrolló el lenguaje mientras
trabajaba en su tesis doctoral en la Universidad de Victoria en Canadá. Cox quería crear un lenguaje
que pudiera ser utilizado para el desarrollo de software orientado a objetos en un entorno de
programación imperativo, y se inspiró en el lenguaje Smalltalk para crear Objective-C.
En 1984, Cox y Tom Love fundaron la compañía Stepstone, con el objetivo de comercializar Objective-
C. La compañía lanzó su primer compilador de Objective-C en 1985, y rápidamente se convirtió en un
estándar en el desarrollo de software para Mac OS. Sin embargo, a pesar de su éxito inicial, la
compañía tuvo dificultades financieras y fue vendida a NeXT Computer, la compañía fundada por
Steve Jobs después de su salida de Apple.
NeXT continuó desarrollando Objective-C y lo utilizó como el lenguaje principal para su sistema
operativo NeXTSTEP. Cuando Apple adquirió NeXT en 1997, Objective-C se convirtió en el lenguaje
de desarrollo principal para la plataforma Mac OS X y, posteriormente, para iOS.
A lo largo de los años, Objective-C ha evolucionado para incluir características como ARC (Automatic
Reference Counting) para la gestión automática de la memoria, bloques de código para la
programación concurrente y soporte para la programación orientada a protocolos. Aunque ha sido
ampliamente utilizado para el desarrollo de aplicaciones para iOS y Mac OS X, Objective-C ha sido
gradualmente reemplazado por Swift, un lenguaje de programación desarrollado por Apple en 2014.
Características de Objective-C
• Orientación a objetos: Objective-C es un lenguaje orientado a objetos, lo que significa que todo
en él es un objeto. Cada objeto tiene propiedades y comportamientos que pueden ser heredados
por otros objetos. El uso de clases, objetos, herencia y polimorfismo es común en el desarrollo
de aplicaciones en Objective-C.
• Dynamic Binding: Objective-C es un lenguaje que admite el enlace dinámico, lo que significa
que los métodos se pueden agregar y eliminar dinámicamente durante la ejecución de un
programa. Esto le da a los desarrolladores una gran flexibilidad al escribir código, ya que
pueden modificar el comportamiento de un objeto en tiempo de ejecución.
• Clases y objetos: Objective-C utiliza clases y objetos para crear aplicaciones. Las clases son
plantillas que se utilizan para crear objetos. Los objetos son instancias de una clase y tienen sus
propias propiedades y métodos.
• Sintaxis legible: Objective-C tiene una sintaxis legible que se parece mucho al inglés. Esto hace
que sea fácil de leer y entender el código, especialmente para los principiantes.
• Herramientas de desarrollo: Objective-C es compatible con una serie de herramientas de
desarrollo, como Xcode y Interface Builder, que hacen que el desarrollo de aplicaciones sea
más fácil y eficiente.
• Compatibilidad con C: Objective-C es un superconjunto de C, lo que significa que es
compatible con todo el código existente en C. Esto hace que sea fácil para los desarrolladores
que ya conocen C comenzar a programar en Objective-C.
• ARC: Objective-C cuenta con el recuento automático de referencias (ARC), que se encarga de
gestionar automáticamente la memoria utilizada por los objetos. Esto hace que el proceso de
desarrollo sea más fácil y menos propenso a errores de memoria.
Sintaxis y semántica
La sintaxis de Objective-C está basada en el lenguaje C, con algunas adiciones y modificaciones para
soportar la programación orientada a objetos.
En Objective-C, los objetos son creados a través de la definición de clases, que especifican la estructura
y comportamiento de los objetos. Las clases son definidas utilizando una sintaxis similar a la de C, pero
con algunos agregados para definir las características específicas de la programación orientada a
objetos.
Por ejemplo, la definición de una clase en Objective-C se ve así:
@interface MyClass : NSObject {
int myInt;
}
- (void)myMethod;
@end
@implementation MyClass
- (void)myMethod {
NSLog(@"Hello, world!");
}
@end
Aquí, se define una clase llamada MyClass que hereda de NSObject. La clase contiene una variable de
instancia llamada myInt y un método llamado myMethod que imprime «Hello, world!» a la consola.
En términos de semántica, Objective-C es un lenguaje orientado a objetos dinámico. Esto significa que
los objetos pueden ser creados y modificados en tiempo de ejecución, lo que permite la
implementación de patrones de diseño complejos y la creación de interfaces de usuario dinámicas.
Además, Objective-C utiliza un sistema de mensajería para llamar a métodos en objetos. En lugar de
llamar directamente a un método en un objeto, se envía un mensaje al objeto y es responsabilidad del
objeto determinar cómo manejar el mensaje. Esto permite la creación de objetos y métodos altamente
flexibles y extensibles.
Estructura de un programa en Objective-C
• Importación de bibliotecas: En Objective-C, se utilizan las directivas #import o #include para
importar bibliotecas o archivos de encabezado necesarios en el programa. Por ejemplo:
#import <Foundation/Foundation.h>
• Declaración de clases: Las clases son la base de la programación orientada a objetos en
Objective-C. Las clases se declaran utilizando la sintaxis @interface, seguida del nombre de la
clase, la herencia (si es aplicable) y una lista de variables de instancia y métodos. Por ejemplo:
@interface MyClass : NSObject {
int myInt;
}
- (void)myMethod;
@end
• Implementación de clases: La implementación de una clase se realiza utilizando la sintaxis
@implementation, seguida del nombre de la clase, y luego la definición de los métodos de la
clase utilizando la sintaxis de Objective-C. Por ejemplo:
@implementation MyClass
- (void)myMethod {
// Código de implementación del método
}
@end
• Función main(): En Objective-C, al igual que en C, el punto de entrada del programa es la
función main(). Aquí es donde comienza la ejecución del programa. Por ejemplo:
int main(int argc, const char * argv[]) {
@autoreleasepool {
// Código del programa
}
return 0;
}
• Lógica del programa: En el cuerpo del programa, se coloca la lógica específica del programa en
forma de declaraciones, definiciones de funciones, llamadas a métodos, asignaciones de
variables, estructuras de control de flujo, etc.
Tipos de datos en Objective-C
En Objective-C, los tipos de datos se dividen en dos categorías principales: tipos de datos primitivos y
tipos de objetos.
Los tipos de datos primitivos son tipos de datos básicos que se utilizan para almacenar valores
numéricos o booleanos. Estos incluyen:
• int: entero de 32 bits
• float: número de punto flotante de 32 bits
• double: número de punto flotante de 64 bits
• char: caracter de 8 bits
• BOOL: valor booleano (verdadero o falso)
Los tipos de objetos son utilizados para almacenar valores más complejos, como cadenas de texto,
arreglos y objetos personalizados. Algunos de los tipos de objetos incluyen:
• NSString: cadena de caracteres de texto
• NSArray: arreglo de objetos
• NSDictionary: diccionario de objetos
También hay tipos de datos para manejar punteros, como id y Class, y otros tipos de datos para manejar
estructuras y uniones. En Objective-C, los tipos de datos también se pueden definir de forma
personalizada mediante la creación de clases y objetos.
Variables y constantes en Objective-C
las variables y constantes son utilizadas para almacenar datos en memoria. Una variable es un espacio
de memoria que se utiliza para almacenar datos que pueden cambiar durante la ejecución del programa.
Por otro lado, una constante es un valor que se define una sola vez y no cambia durante la ejecución del
programa.
En Objective-C, se puede declarar una variable usando la sintaxis:
tipo nombreVariable;
Por ejemplo:
int edad;
También es posible inicializar la variable al declararla, como se muestra en el siguiente ejemplo:
int edad = 30;
Las constantes en Objective-C se definen utilizando la palabra clave const. Por ejemplo:
const double PI = 3.141592;
En Objective-C, las variables y constantes también pueden ser definidas en la interfaz o en la
implementación de una clase. Si se define una variable en la interfaz de una clase, será visible para
todas las implementaciones de la misma. Por otro lado, si se define una variable en la implementación
de una clase, será visible sólo dentro de la misma.
Operadores en Objective-C
En Objective-C, los operadores se utilizan para realizar operaciones aritméticas, lógicas y de
asignación en variables y constantes. Algunos operadores comunes en Objective-C incluyen:
• Operadores aritméticos:
➢ Suma (+)
➢ Resta (-)
➢ Multiplicación (*)
➢ División (/)
➢ Módulo (%)
• Operadores de comparación:
➢ Igualdad (==)
➢ Desigualdad (!=)
➢ Menor que (<)
➢ Mayor que (>)Menor o igual que
➢ (<=)Mayor o igual que (>=)
• Operadores lógicos:
➢ And lógico (&&)
➢ Or lógico (||)
➢ Not lógico (!)
• Operadores de asignación:
➢ Asignación (=)
➢ Asignación y suma (+=)
➢ Asignación y resta (-=)
➢ Asignación y multiplicación (*=)
➢ Asignación y división (/=)
➢ Asignación y módulo (%=)
Es importante tener en cuenta que, al igual que en otros lenguajes de programación, los operadores
tienen una precedencia y asociatividad específicas en Objective-C. Por ejemplo, los operadores
aritméticos tienen una mayor precedencia que los operadores de comparación, lo que significa que se
evalúan primero en una expresión.
Programación orientada a objetos
La programación orientada a objetos (POO) es una metodología de programación que se enfoca en el
uso de objetos que encapsulan datos y comportamientos. Objective-C es un lenguaje de programación
que soporta POO. A continuación, se explican los temas relacionados con POO en Objective-C:
Clases y Objetos:
En Objective-C, una clase es la definición de un objeto, mientras que un objeto es una instancia de una
clase.
Una clase se define mediante la declaración de una interfaz y una implementación. La interfaz define
los métodos y propiedades de la clase, mientras que la implementación proporciona el código para esos
métodos y propiedades.
Para crear un objeto, se utiliza el método alloc para asignar memoria y init para inicializar el objeto.
• Herencia:
➢ La herencia permite que una clase herede métodos y propiedades de una clase base.
➢ En Objective-C, la herencia se define mediante la declaración de una nueva clase que
hereda de una clase base. La nueva clase puede agregar nuevos métodos y propiedades o
modificar los existentes.
➢ El operador «super» se utiliza para hacer referencia a la clase base y llamar a sus métodos.
• Polimorfismo:
➢ El polimorfismo permite que un objeto se comporte de diferentes maneras según el
contexto.
➢ En Objective-C, el polimorfismo se logra a través del uso de clases y objetos que
implementan un mismo conjunto de métodos de manera diferente.
➢ El polimorfismo se puede utilizar para hacer que el código sea más flexible y reutilizable.
• Encapsulamiento:
➢ El encapsulamiento es el proceso de ocultar los detalles de implementación de una clase y
proporcionar una interfaz clara y consistente para interactuar con ella.
➢ En Objective-C, el encapsulamiento se logra mediante la definición de propiedades y
métodos públicos y privados.
➢ Los métodos privados no son accesibles desde fuera de la clase, mientras que los métodos
públicos se pueden utilizar para interactuar con el objeto.
• Protocolos:
➢ Los protocolos son una forma de definir un conjunto de métodos que una clase debe
implementar.
➢ En Objective-C, un protocolo se define mediante la declaración de una interfaz que contiene
una lista de métodos. Las clases pueden adoptar el protocolo y proporcionar una
implementación para los métodos requeridos.
➢ Los protocolos son útiles para hacer que el código sea más modular y para definir interfaces
comunes entre objetos.
• Mensajes:
➢ Los mensajes son la forma en que los objetos en Objective-C interactúan entre sí.
➢ En Objective-C, los mensajes se envían utilizando la sintaxis [objeto mensaje]. El objeto
que recibe el mensaje buscará un método correspondiente y lo ejecutará.
➢ Los mensajes son una parte fundamental de la programación orientada a objetos y se
utilizan para realizar operaciones en los objetos.
• Categorías:
➢ Las categorías permiten agregar métodos a una clase existente sin tener que modificar su
implementación original.
➢ En Objective-C, una categoría es una forma de extender una clase existente mediante la
adición de nuevos métodos.
➢ Las categorías son útiles para agregar funcionalidad a clases existentes sin tener que
modificar su implementación original.
Estructuras de control en Objective-C
En Objective-C, las estructuras de control se utilizan para controlar el flujo de ejecución de un
programa. Las principales estructuras de control en Objective-C son las siguientes:
• Condicionales: permiten que se ejecuten ciertas instrucciones solamente si se cumple una
determinada condición. Los condicionales en Objective-C son los siguientes:
➢ If: ejecuta una instrucción si la condición especificada es verdadera.
➢ If-else: ejecuta una instrucción si la condición especificada es verdadera, y otra si la
condición es falsa.
➢ Nested if: permite anidar varias instrucciones if dentro de otras.
• Bucles: se utilizan para ejecutar una determinada sección de código varias veces, hasta que se
cumpla una condición. Los bucles en Objective-C son los siguientes:
➢ While: ejecuta una sección de código mientras se cumpla una condición.
➢ Do-while: ejecuta una sección de código al menos una vez, y luego continúa ejecutándola
mientras se cumpla una condición.
➢ For: ejecuta una sección de código un número determinado de veces, especificado por el
programador.
• Switch: es una estructura de control que permite ejecutar diferentes secciones de código en
función del valor de una variable.
Archivos y entrada/salida
En Objective-C, el manejo de archivos y entrada/salida se realiza utilizando la biblioteca estándar de C,
ya que Objective-C es un superset de C.
Para trabajar con archivos, se utilizan las funciones de la biblioteca estándar de C para abrir, cerrar, leer
y escribir archivos. Estas funciones incluyen:
• fopen(): función utilizada para abrir un archivo. Toma como argumentos el nombre del archivo
y el modo en el que se desea abrir el archivo (solo lectura, solo escritura, lectura y escritura,
etc.)
• fclose(): función utilizada para cerrar un archivo que se ha abierto previamente.
• fgetc(): función utilizada para leer un carácter de un archivo.
• fgets(): función utilizada para leer una línea completa de un archivo.
• fprintf(): función utilizada para escribir datos en un archivo con formato específico.
• fputs(): función utilizada para escribir una cadena de caracteres en un archivo.
• fread(): función utilizada para leer un bloque de datos de un archivo.
• fwrite(): función utilizada para escribir un bloque de datos en un archivo.
•
Para trabajar con entrada/salida estándar, se utilizan las funciones de la biblioteca estándar de C para
leer datos desde la entrada estándar (generalmente el teclado) y escribir datos en la salida estándar
(generalmente la pantalla). Estas funciones incluyen:
• scanf(): función utilizada para leer datos de la entrada estándar con formato específico.
• printf(): función utilizada para escribir datos en la salida estándar con formato específico.
• gets(): función utilizada para leer una línea completa de la entrada estándar.
• putchar(): función utilizada para escribir un carácter en la salida estándar.
• puts(): función utilizada para escribir una cadena de caracteres en la salida estándar.
Es importante tener en cuenta que al trabajar con archivos y entrada/salida en Objective-C, se deben
tener en cuenta las consideraciones de seguridad, como la validación de entrada y la gestión adecuada
de errores.
Herramientas de desarrollo para Objective-C
El desarrollo de software en Objective-C se realiza en un entorno de desarrollo integrado (IDE), que
proporciona una serie de herramientas para ayudar al programador en el proceso de desarrollo. A
continuación, se presentan algunas de las herramientas de desarrollo más comunes para Objective-C:
• Xcode: Es el IDE oficial de Apple para el desarrollo de aplicaciones en macOS, iOS, iPadOS,
watchOS y tvOS. Xcode proporciona un conjunto completo de herramientas de desarrollo,
incluyendo un editor de código, un depurador, un compilador, un generador de perfiles y un
conjunto de herramientas de interfaz de usuario.
• Interface Builder: Es una herramienta que se incluye con Xcode y que permite diseñar y crear
la interfaz de usuario de las aplicaciones de manera visual, sin necesidad de escribir código.
Interface Builder permite arrastrar y soltar elementos de la interfaz de usuario y establecer sus
propiedades.
• Instruments: Es una herramienta de generación de perfiles que se incluye con Xcode. Permite
analizar el rendimiento y el uso de memoria de las aplicaciones, identificar cuellos de botella y
detectar problemas de memoria.
• LLDB: Es un depurador que se incluye con Xcode. Permite detener la ejecución del programa
en puntos específicos y examinar las variables y la memoria en tiempo de ejecución.
• Git: Es un sistema de control de versiones que se utiliza para llevar un registro de los cambios
realizados en el código fuente de la aplicación. Xcode tiene integrado un cliente Git, lo que
facilita la gestión de los repositorios Git desde el propio IDE.
• CocoaPods: Es un gestor de dependencias para Objective-C que se utiliza para integrar
bibliotecas de terceros en una aplicación. CocoaPods permite especificar las bibliotecas que
necesita una aplicación y descargarlas automáticamente.
• Swift Package Manager: Es una herramienta de construcción que se utiliza para construir y
gestionar proyectos escritos en Swift y Objective-C. Swift Package Manager proporciona una
manera sencilla de definir las dependencias y las bibliotecas necesarias para una aplicación y
construirla en diferentes plataformas.
Aplicaciones de Objective-C
Objective-C es un lenguaje de programación ampliamente utilizado para el desarrollo de aplicaciones
en la plataforma de Apple, incluyendo Mac OS X e iOS. Algunas de las aplicaciones más populares
desarrolladas con Objective-C incluyen: