Desarrollo de aplicaciones de Mac para dummies

Usos de desarrollo de aplicaciones de Macintosh devoluciones de llamada

para permitir que Mac OS X para ejecutar código dentro de su aplicación para operaciones específicas. Si va a crear un Macintosh estándar Ventana- o aplicación basada en documentos, el primer código que OS X ejecutará está en uno de los siguientes métodos de devolución de llamada que hay que crear para su aplicación, en función del diseño de aplicaciones:

  • Aplicaciones basadas en la ventana: (void) applicationDidFinishLaunching: (NSNotification *) aNotification

  • Aplicaciones basadas en documentos: (void) windowControllerDidLoadNib: (NSWindowController *) windowController

Una devolución de llamada es simplemente un método que el sistema operativo se ejecuta con el tiempo mientras está tratando de proporcionar o recuperar información de su aplicación. Su código de la aplicación se ejecutará un método para una clase de Cacao donde su aplicación va a tener la oportunidad de dar el nombre de un método de una de sus clases, que se llamará en un objeto de esa clase de su aplicación también tendrá que proporcionar.

LA delegado es un objeto de ayuda, que una clase Cacao utiliza para ampliar la funcionalidad de la clase por lo que le permite implementar el código que la clase Cacao ejecutará en ciertas circunstancias. Una clase Cacao comprueba su objeto delegado (si se ha asignado) por si el delegado proporciona una implementación de un método específico. Si el delegado tiene ese método, la clase Cocoa ejecuta equivalencia- que si el delegado no implementa este método específico, la clase ya sea Cocoa utiliza un método predeterminado de su propio o registra un error. La mayoría de los delegados deben incorporar un particular, protocolo que determina qué métodos pueden implement- delegados de su código debe utilizar los métodos del protocolo específico que el delegado espera implementar.

Éstos son algunos de los objetos de cacao que pueden utilizar delegados para ejecutar su código:

  • NSTableView. los NSTableView acepta un delegado que obedece a la NSTableViewDelegate protocolo. Esto incluye 20 a 30 métodos de ese objeto delegado de su aplicación puede implementar para apoyar la necesidad de su aplicación para saber cuál es el NSTableView esta haciendo. Hay métodos que serán llamados en su aplicación cuando se necesita conocer y reaccionar a una acciones, como cuando un usuario realiza una selección en la tabla o cuando se cambia el tamaño de una columna.

  • NSApplication. Se puede asignar un NSApplicationDelegate para manejar algunos de los métodos que una NSApplication instancia (la aplicación) recibirá. Estos métodos pueden ser llamados justo antes o justo después de su aplicación ejecuta otro método, por lo que su aplicación se puede preparar.

  • NSWindow. Un NSWindowDelegate asignado a una de las ventanas de su aplicación le dará a su aplicación la oportunidad de responder a un cambio de tamaño de usuario, en movimiento, o de otros eventos de ventana.

  • NSMenu. Usted implementa una NSMenuDelegate para apoyar los eventos que suceden cuando un usuario interactúa con los menús de la aplicación.

Non-Objective-C Marcos en aplicaciones de Macintosh

Apple proporciona muchos marcos de desarrollo de aplicaciones de Macintosh (bibliotecas de códigos) que su aplicación puede llamar para realizar las miles de operaciones en OS X. Muchos de estos marcos, como el Kit de PDF, se componen de clases de Objective-C, de la que su aplicación puede crear y utilizar objetos dentro de sus aplicaciones. Sin embargo, algunos de estos marcos son sólo las bibliotecas de funciones que su aplicación puede ejecutar.

Por ejemplo, la CFNetwork marco es un conjunto de funciones que su aplicación puede utilizar para realizar las conexiones de red bien afinados. los NSURL clase proporciona un buen conjunto de operaciones de red básicas que son ideales para la recuperación de datos mediante una dirección URL. Si su aplicación requiere un mayor control sobre las comunicaciones de red se inicia, usted tendrá que utilizar el CFNetwork Marco y sus funciones. Usted podría utilizar el siguiente código para preparar una solicitud HTTP para la transmisión a una URL específica:

CFStringRef httpBody = CFSTR ("") -CFStringRef headerFieldName = CFSTR ("Cookies") - // añadir cookie específica de HTTP requestCFStringRef headerFieldValue = CFSTR ("loginid = my_user_name- password = my_password-") -CFStringRef url = CFSTR ("diabeticpad .com ") -CFURLRef urlRef = CFURLCreateWithStrign (kCFAllocatorDefault, url, NULL) -CFStringRef requestMethod = CFSTR (" GET ") -CFHTTPMessageRef petición = CFHTTPMessageCreateRequest (kCFAllocatorDefault, requestMethod, url, kCFHTTPVersion1_1) -CFHTTPMessageSetBody (solicitud, httpBody) - // añadir el cookieCFHTTPMessageSetHeaderFieldValue (solicitud, headerFieldName, headerFieldValue) -CFDataRef serializedHttpRequest = CFHTTPMessageCopySerializedMessage (bajo petición) -

Una vez que su código tiene la solicitud serializado, su aplicación puede entonces abrir un flujo de escritura con el fin de entregar la solicitud a su destino.

Todos los marcos de Apple basados ​​en C proporcionan un conjunto de funciones para la realización de este tipo de programación de bajo nivel. Su código se pondrá más complicada, pero Apple no ofrece clases de Objective-C para todos sus marcos. Si realmente necesita la funcionalidad disponible en uno de esos marcos, esta es la única manera de lograr los objetivos de su aplicación. Los siguientes marcos no proporcionan clases de Objective-C:

  • Audio Toolbox

  • CFNetwork

  • MIDI Core

  • Core texto

  • Servicio de directorio (como LDAP y Open Directory)

  • Seguridad

Si desea crear aplicaciones que pueden aprovechar al máximo las características de OS X, tiene que estar preparado para apoyar el uso de bibliotecas de código no-Objetivo-C.

C ++ Code en Objective-C aplicaciones de Macintosh

Objective-C proporciona características orientadas a objetos para el desarrollo de aplicaciones de Macintosh, como la herencia y el polimorfismo. El lenguaje se basa en la lengua- de programación C, por lo tanto, usted puede utilizar su conocimiento de programación C para codificar en Objective-C. Objective-C ++ es un mecanismo puente que permiten módulos de fuente de Objective-C para trabajar con clases de Objective-C ++, lo que podría compilación y enlace con C ++ bibliotecas de código.

El siguiente ejemplo simple de una matriz cuadrada muestra el contenido del archivo de cabecera de C ++ para una Matrix clase. La clase Matrix viene con el constructor estándar y destructor para una clase C ++, y los métodos son lo que se espera de un objeto básico matriz cuadrada:

Matrix clase {public: Matrix (int Insize) -virtual ~ Matrix () - int getSize (void) -INT getDeterminant (void) -void setElement (int InRow, int INCOL, int inValue) -INT getElement (int InRow, int INCOL ) operador -Matrix + (const Matriz inAddend) -cuarto: int m_size-int [] [] m_elements -} -

Para utilizar Objective-C ++, su Objective-C ++ módulos de clase debe utilizar la extensión de archivo .mm. Esto le dice compilador de Xcode que la clase debe ser compilado usando Objective-C ++, lo que le permitirá a su clase que se utiliza C ++ palabras clave del lenguaje. El uso de Objective-C ++, su aplicación podría crear un objeto Matrix para realizar operaciones básicas, como sumar dos Matrix objetos juntos. Esto supone el módulo de fuente de Objective-C ++ tiene imported el C ++ Matrix.h archivo:

- (void) {addTwoMatrices Matrix MatrixOne (3) - // 3x3 matrixMatrix matrixTwo (3) - // anotherint rowIndex = 0-int colIndex = 0-de (rowIndex = 0- rowIndexlt; 3- ++ rowIndex) {para (colIndex = 0- colIndexlt 3- ++ colIndex) {// set matriz de elementos propios a su valuesmatrixOne.setElement (rowIndex, colIndex, XXX) - // establecer la matriz de dos elementos a alguna otra valuesmatrixTwo.setElement (rowIndex, colIndex, YYY) -}} Matrix matrixSum = MatrixOne + matrixTwo-

Con Objective-C ++, sus aplicaciones son capaces de tomar ventaja de todas las bibliotecas de terceros disponibles escritos para C ++.




» » » » Desarrollo de aplicaciones de Mac para dummies