¿Cómo desarrollar en PHP con Xcode y Objective-C

¿Cuántos programadores utilizan para hacer, también, voy a construir mis propias bibliotecas de funciones listas para ser reutilizada en múltiples proyectos y en múltiples contextos. Pasaré el título de este post, tal vez un poco "arriesgado, pero, sin embargo, como veremos, no muy lejos de la realidad.

En Objective-C se puede escribir y llamar a C / C + +, que incluye el conjunto para el caso. Esta característica lo convierte en un lenguaje muy versátil y, en algunos aspectos, fenomenal. Por un lado, puede utilizar y apreciar la sintaxis puramente Objective-C, por otro lado se puede portar rápidamente el código escrito en ANSI C (tal vez por Digital Unix, Sun) y utilizarlo cómodamente en nuestra aplicación iPhone o iPad; por no hablar de todo el kernel BSD ya está disponible en Mac OS X!

Una de las actividades que cualquier desarrollador - incluso sin experiencia - debe hacer, es simplificar la escritura de código, sobre todo para simplificar las llamadas a las funciones que se utilizan con más frecuencia. El Apple iPhone / iPad, por ejemplo, cualquier aplicación, tarde o temprano tendrá que hacer uso del objeto UIAlertView , herramienta muy útil para informar al usuario de un evento o, en su caso, solicitar la confirmación de si es o no una acción. Este objeto se utiliza en la misma forma de ' alert() de JavaScript, por así decirlo.

Bueno, uno de su llamamiento, en su forma más simple, se resuelve mediante el código:

1
2
3
4
5
6
7
8
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" UIAlertView * alert = [[UIAlertView alloc] initWithTitle: @ "Título"
"Corpo del messaggio" mensaje: @ "Cuerpo del Mensaje"
delegado: nil
"Ok" cancelButtonTitle: @ "Ok"
] ; otherButtonTitles: nil];

; [Alerta mostrar];
; [Alerta autorelease];

Ahora, ¿no sería agradable para escribir en Objective-C que?:

1
"Titolo" , @ "Corpo del messaggio" , @ "Ok" ) ; alert (@ "Título", @ "Cuerpo del Mensaje", @ "Ok");

Bueno, la cosa es factible y fácil de implementar. , nel caso del file .h e prima di @implementation , nel caso dei file di implementazione .m . Todo el código que no pertenecen a la clase, tal como sucede para los declarativas #define , debe ser insertado antes de @interface , en el caso de el archivo .h y antes @implementation , en el caso del archivo de implementación .m .

Nos entonces nos podemos crear nuestra propia biblioteca personal (con el código incluso entonces mixta) con nuestras funciones - productos - cargos adicionales. . A modo de ejemplo, cree dos archivos phpFunctions.h y phpFunctions.m .
En el archivo de cabecera phpFunctions.h escritura:

1
2
3
/ / PhpFunctions.h

NSString * title, NSString * message, NSString * dismissButtonTitle ) ; void alert ( NSString * title, NSString * mensaje, NSString * dismissButtonTitle);

En el archivo de implementación phpFunctions.m escritura:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / PhpFunctions.m

# Import "phpFunctions.h"

NSString * title, NSString * message, NSString * dismissButtonTitle ) { void alert ( NSString * title, NSString * mensaje, NSString * dismissButtonTitle) {
[ [ UIAlertView alloc ] initWithTitle : title UIAlertView * alert = [[UIAlertView alloc] initWithTitle: título
Mensaje: Mensaje
delegado: nil
cancelButtonTitle: dismissButtonTitle
] ; otherButtonTitles: nil];

; [Alerta mostrar];
; [Alerta autorelease];
}

Lo tengo! A partir de este momento, si se incluyen en un controlador de vista phpFunctions.h , podemos escribir más simplemente:

1
2
3
4
5
6
7
8
9
10
11
# Import "phpFunctions.h"

/ / ...

void ) mioMessaggio : ( int ) valore { - (Vacío) mioMessaggio: (int) valor {
valore > 10 ) { if (valor> 10) {
"Informazioni" , @ "Valore maggiore di 10" , @ "Bravo" ) ; alert (@ "Info", @ "Valor superior a 10", @ "Bravo");
{ Else {}
"Informazioni" , @ "Valore minore di 10" , @ "Meno bravo" ) ; alert (@ "Info", @ "valor de menos de 10", @ "Menos bueno");
}
}

Este procedimiento se puede aplicar a muchas funciones y características. Como otro ejemplo, vamos a reescribir la función explode() en PHP, que se descompone una cadena determinada de acuerdo con un separador especificado, devolviendo una matriz de cadenas. En Objective-C esta característica es relaizzata por:

1
2
3
4
5
/ / Ejemplo de Split / explotar
stringaDaScomporre = @ "Sono una stringa da scomporre" ; NSString * stringaDaScomporre = @ "Soy una cadena a dividir";
parti = [ stringaDaScomporre componentsSeparatedByString : @ " " ] ; NSArray * piezas = [stringaDaScomporre componentsSeparatedByString: @ ""];

"parti = %@" , parti ) ; NSLog (@ "% @ = partes", las partes);

En este caso se procede exactamente igual que antes, la expansión de nuestra biblioteca. En el archivo phpFunctions.h agregan:

1
2
3
/ / PhpFunctions.h

explode ( NSString * delimiter, NSString * string ) ; NSArray * explotar ( NSString * delimitador, NSString * string);

En el archivo .m add:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/ / PhpFunctions.m

# Import "phpFunctions.h"

/ *!
@ Función explode ()
@ Style PHP Resumen
@ Discusión desmonta una strimnga según un delimitador
@ Param string delimitador delimitador
@ Param string String para descomponer
@ Resultado matriz de cadenas
* /
explode ( NSString * delimiter, NSString * string ) { NSArray * explotar ( NSString * delimitador, NSString * string) {
string componentsSeparatedByString : delimiter ] ; volver [componentsSeparatedByString cadena: delimitador];
}

La ganancia del código, en este caso particular, no es mucho, pero para la gente como yo, que se desarrolla en PHP, JavaScript, ActionScript y Objective-C puede ser útil recrear una cierta uniformidad, o la familiaridad de funciones. . Sin duda, es más menomico explode() - si usted es de PHP - que componentsSeparatedByString .

Ahora tenemos dos funciones convenientes para el uso en nuestros proyectos. A partir de ahora, si usted necesita para dividir una cadena, se puede escribir:

1
2
3
4
5
6
# Import "phpFunctions.h"

stringaDaScomporre = @ "Sono una stringa da scomporre" ; NSString * stringaDaScomporre = @ "Soy una cadena a dividir";
parti = explode ( @ " " , stringaDaScomporre ) ; NSArray * partes = explode (@ "", stringaDaScomporre);

"parti = %@" , parti ) ; NSLog (@ "% @ = partes", las partes);

Para que no quede nada para crecer esta biblioteca, con el fin de acelerar la elaboración de hermosas aplicaciones para iPhone, iPad y Mac OS, o, más generalmente, para iOS.