Archivo de Junio, 2009


Trabajo en saidmade: programador Wanted

Saidmade Ltd. , a pesar de la aparente momento de crisis, ofrece una gran oportunidad para los jóvenes entusiastas de la informática. La oferta de "trabajo de verdad está dirigido a todos aquellos que deseen trabajar como desarrollador, una profesión que requiere una gran pasión y el deseo, a menudo subestimada, especialmente aquí en Italia. Las empresas asociadas que, por lo tanto, está buscando un programador / programador junior con los siguientes requisitos:

  • Edad entre 18 y 27 años y una buena dosis de creatividad
  • Conocimientos básicos de programación y, sobre todo del lenguaje ANSI-C

El deseo de adquirir el conocimiento de:

  • Programación OO
  • PHP
  • Javascript
  • Adobe ActionScript
  • C + + / Objective-C

También es una ventaja del conocimiento:

  • XHTML / CSS
  • WordPress

Si su perfil y sus intereses se reflejan en la anterior, por favor envíe su propuesta de condidatura: info@saidmade.com

Más información ...

Eclipse, Aptana: subir archivos usando el teclado

El IDE de Aptana también está disponible como un plugin para Eclipse . Una de las características más apreciadas de este entorno es una excelente gestión y sincronización de archivos FTP / proyecto local con mando a distancia. En particular, existe un script que te permite enviar el código actualmente en la ventana del editor con el servidor de forma remota utilizando la combinación de teclas Control + Mayús + U o Comando + Mayúsculas + U en Mac OS (la misma combinación se utiliza en Adobe Dreamweaver). En algunas instalaciones (por ejemplo, mi Mac OS, y Eclipse con el plugin de Aptana), esta combinación parece estar ausente, y si tratas de rastrear en las Preferencias> General> Las llaves no se encuentra - misteriosamente - nada! El problema, sin embargo, se resuelve fácilmente y depende de la superposición de otra configuración. Es evidente que la combinación de teclas antes mencionadas se configura por defecto a otra función: Muestra apariciones en el archivo de menú rápido. Luego sólo tienes que abrir el panel de Preferencias> General> Llaves y programas de búsqueda occ ..:

eclipseprefs

Rimuivere la "unión", es decir, la asociación con el atajo de teclado, y va a funcionar!

Más información ...

iPhone: todas las fuentes del sistema

El iPhone de Apple ofrece un número limitado de tipos de letra para los desarrolladores. La lista de fuentes disponibles es fácil de lograr por el código, como veremos más adelante. Si desea utilizar sus propias fuentes, por ejemplo mediante su inclusión en los recursos, es un poco más articulado y conivolge también la expedición de los certificados (derechos) sobre las fuentes "embeddati" ... vamos a hablar más tarde. Volviendo lugar para presentar el iPhone de fuente oficial nell'Apple son (click en la imagen para ampliar):

iphonefonts

El Apple iPhone SDK permite el acceso a las fuentes del sistema especiales. Estos se identifican por las constantes particulares y son:

1
2
3
[ UIFont boldSystemFontOfSize : 12.0 ] ; UIFont myBoldFont * = [UIFont boldSystemFontOfSize: 12,0];
[ UIFont SystemFontOfSize : 12.0 ] ; UIFont mySystemFont * = [UIFont SystemFontOfSize: 12,0];
[ UIFont italicSystemFontOfSize : 12.0 ] ; UIFont myItalicFont * = [UIFont italicSystemFontOfSize: 12,0];

Si usted consigue realmente un puntero a una fuente de Odei se muestra en la imagen de arriba sólo tiene que utilizar:

1
[ UIFont fontWithName : @ "Helvetica-Bold" size : 22.0 ] ; UIFont myCustomFont * = [fontWithName UIFont: @ "Helvetica-Bold" Tamaño: 22,0];

Como se ha señalado la gestión de la fuente es especial, en adición a la familia (Helvetica, Courier, etc ...) debe especificar el tipo (negrita, cursiva, etc ...). En la práctica, por lo tanto, una fuente debe estar provisto de estas características. La Helvética, por ejemplo, está presente con:

1
2
3
4
Helvetica
Helvetica-Bold
Helvetica-Oblique
Helvetica-BoldOblique

Si desea visualizar sus fuentes directamente en el iPhone, he aquí alguna línea de código útil:

1
2
3
4
5
6
7
8
9
10
11
12
listOfFonts = [ [ NSArray alloc ] initWithArray : [ UIFont familyNames ] ] ; NSArray * listOfFonts = [[ NSArray alloc] initWithArray: [UIFont familynames]];
subFontTypes; NSArray * subFontTypes;

int i = 0 ; i< [ listOfFonts count ] ; i ++ ) { for (int i = 0; i <[listOfFonts cuenta]; i + +) {
"Font Family: %@" , [ listOfFonts objectAtIndex : i ] ) ; NSLog (@ "Font Family:% @", [objectAtIndex listOfFonts: i]);
NSArray alloc ] initWithArray : [ UIFont fontNamesForFamilyName : [ listOfFonts objectAtIndex : i ] ] ] ; subFontTypes = [[ NSArray alloc] initWithArray: [UIFont fontNamesForFamilyName: [objectAtIndex listOfFonts: i]]];
int j = 0 ; j< [ subFontTypes count ] ; j ++ ) { for (int j = 0, j <[subFontTypes cuenta] j + +) {
"+----->Type: %@" , [ subFontTypes objectAtIndex : j ] ) ; NSLog (@ "+ -----> Tipo:% @", [objectAtIndex subFontTypes: j]);
}
; [Comunicado de SubFontTypes];
}
; [ListOfFonts liberación];

Con la SDK 2.2.1 en mi hipoteca, tengo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Familia de fuentes: Courier
+ -----> Tipo: Courier
+ -----> Tipo: Courier-BoldOblique
+ -----> Tipo: Courier-Oblique
+ -----> Tipo: Courier-Bold
Font Family: AppleGothic
+ -----> Tipo: AppleGothic
Familia: con letra Arial
+ -----> Tipo: ArialMT
+ -----> Tipo: Arial-BoldMT
+ -----> Tipo: Arial-BoldItalicMT
+ -----> Tipo: Arial-ItalicMT
Font Family: STHeiti TC
+ -----> Tipo: Luz-STHeitiTC
+ -----> Tipo: Medio STHeitiTC
Font Family: Hiragino Kaku Gothic Pron
+ -----> Tipo: HiraKakuProN-W6
+ -----> Tipo: HiraKakuProN-W3
Familia de fuentes: Courier New
+ -----> Tipo: CourierNewPS-BoldMT
+ -----> Tipo: CourierNewPS-ItalicMT
+ -----> Tipo: CourierNewPS-BoldItalicMT
+ -----> Tipo: CourierNewPSMT
Font Family: Zapfino
+ -----> Tipo: Zapfino
Familia Fuente: Arial Unicode MS
+ -----> Tipo: ArialUnicodeMS
Font Family: STHeiti SC
+ -----> Tipo: Medio STHeitiSC
+ -----> Tipo: Luz-STHeitiSC
Font Family: American Typewriter
+ -----> Tipo: AmericanTypewriter
+ -----> Tipo: AmericanTypewriter-Bold
Familia de fuentes: Helvetica
+ -----> Tipo: Helvetica-Oblique
+ -----> Tipo: Helvetica-BoldOblique
+ -----> Tipo: Helvetica
+ -----> Tipo: Helvetica-Bold
Font Family: Marker Felt
+ -----> Tipo: Delgada MarkerFelt
Familia de fuentes: Helvetica Neue
+ -----> Tipo: HelveticaNeue
+ -----> Tipo: HelveticaNeue-Bold
Font Family: DB LCD de temperatura
+ -----> Tipo: DBLCDTempBlack
Font Family: Verdana
+ -----> Tipo: Verdana-Bold
+ -----> Tipo: Verdana-BoldItalic
+ -----> Tipo: Verdana
+ -----> Tipo: Verdana, cursiva
Familia de letra: Times New Roman
+ -----> Tipo: TimesNewRomanPSMT
+ -----> Tipo: TimesNewRomanPS-BoldMT
+ -----> Tipo: TimesNewRomanPS-BoldItalicMT
+ -----> Tipo: TimesNewRomanPS-ItalicMT
Font Family: Georgia
+ -----> Tipo: Georgia-Bold
+ -----> Tipo: Georgia
+ -----> Tipo: Georgia-Bold
+ -----> Tipo: Georgia-Bold
Font Family: STHeiti J
+ -----> Tipo: Medio STHeitiJ
+ -----> Tipo: Luz-STHeitiJ
Familia de fuentes: Arial Rounded MT Bold
+ -----> Tipo: ArialRoundedMTBold
Font Family: Trebuchet MS
+ -----> Tipo: TrebuchetMS-Italic
+ -----> Tipo: TrebuchetMS
+ -----> Tipo: Trebuchet-BoldItalic
+ -----> Tipo: TrebuchetMS-Bold
Font Family: STHeiti K
+ -----> Tipo: Medio STHeitiK
+ -----> Tipo: Luz-STHeitiK

Más información ...

Cómo eliminar NSLog () de la fuente de XCode

<a target="_blank" href="http://developer.apple.com/iphone/library/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html#//apple_ref/c/func/NSLog">NSLog()</a> una función muy útil durante las primeras etapas de un proyecto para probar y depurar una aplicación para el iPhone de Apple o, más generalmente, en el entorno XCode. Siendo sólo una función, al igual que el otro, su presencia se hará sentir, incluso cuando la liberación (release) nuestro ejecutable. potrebbero influire sulle performance della nostra applicazione, soprattutto se abbiamo inserito NSLog() all'interno di loop. Por lo tanto, se hace necesaria para eliminar, de alguna manera, todas las líneas de NSLog() de nuestro código, porque no es necesario, ya sea porque las llamadas a NSLog() podría afectar el rendimiento de nuestra aplicación, sobre todo si ponemos NSLog() a la 'bucle interno.

Inmediatamente descartar la solución a la "mirada" y "cancelar" porque un día podría ser usado de nuevo. Se excluye también la solución de la "apariencia" y "comentarios", incómodos por la misma razón que antes. Afortunadamente, un limpio, sencillo y está usando los condicionales de compilación adecuadas. Lo que hacemos en la práctica, y decirle al compilador para excluir - si hay una condición específica - la hora de elaborar nuestras líneas de código que contienen NSLog() .

Las compilaciones de directivas e instrucciones del compilador condicional, es un muy poderoso y generalizado. Los que vienen desde el desarrollo de la norma ANSI-C sin duda saben muy bien y utilizzte en muchas situaciones. La peculiaridad de estas "Instrucciones" reside en el hecho, mencionado anteriormente, para ser vistos por el compilador y no pueden ejecutarse. Esta característica hace útiles en muchos casos y puede resolver los problemas de otro modo muy molesto.

Veamos un ejemplo de código que, como se predijo, se puede "borrar" mediante la compilación de fragmentos de código, en nuestro caso NSLog() :

1
2
3
4
5
6
# Definir una ACTIVE_NSLOG
/ / Si la constante se define ACTIVE_NSLOG llenar
/ / Bloque de código entre # ifdef y # endif
# Ifdef ACTIVE_NSLOG
" ... bla bla" ) ; NSLog (@ "... bla, bla");
# Endif

). Las instrucciones condicionales son parte del compilador de la misma familia que el #define , también, de hecho, están precedidas por una "libra" ( # ). solo se ACTIVE_NSLOG è definito. En el ejemplo mostrado, hemos definido una constante ACTIVE_NSLOG ; las líneas siguientes de código indica al compilador que "incluye" línea de NSLog() sólo si ACTIVE_NSLOG se define. Si nos ocupamos, durante la redacción de nuestro código, insertando llamadas a NSLog() dentro del bloque #ifdef ... #endif per far sparire, alla prossima compilazione, tutti i nostri NSLog() . #ifdef ... #endif , basta con borrar la definición de la constante ACTIVE_NSLOG a desaparecer, la siguiente compilación, toda nuestra NSLog() .

Una mejor y última

Veamos ahora cómo configurar el entorno XCode para mejorar aún más lo que hemos hecho aquí! En primer lugar, elegir un nombre de constante que utilizamos en nuestros proyectos de excluir de la compilación NSLog() . o quello che preferite. Usted puede elegir el nombre que usted quiera, desde DEBUG al MIO_DEBUG o lo que sea que usted prefiera. Abra el proyecto, nuevo o viejo. Coloque todos los NSLog() dentro del bloque (o bloques):

1
2
3
# Ifdef MIO_DEBUG
" ... bla bla" ) ; NSLog (@ "... bla, bla");
# Endif

Seleccione el archivo principal de su proyecto, haga clic derecho y elegir la Obtener información.

getinfo

Esto abre una ventana con información sobre el proyecto:

userdefine

Seleccione la pestaña Generar, comprobar que está en configuración de depuración (esta es la joya), vaya a la sección definida por el usuario y agregar, a través del botón en la parte inferior izquierda, un nuevo campo llamado OTHER_CFLAGS . En este assegnamoli el valor -DMIO_DEBUG=1 . La sintaxis es -D{mia define}=1 .

Este procedimiento tiene dos ventajas:

  1. No debemos poner en el código #define MIO_DEBUG 1 , pero lo hacemos a través de la información del proyecto. Por lo tanto, cuando vamos a llenar la versión de lanzamiento (el uno sin el NSLog() ) debemos recordar para eliminar la línea #define MIO_DEBUG 1
  2. La constante se define en relación con la configuración, en nuestro caso de depuración. A continuación, pasar a la configuración de lanzamiento (release) va a estar ausente y las filas constantes con NSLog() no se compila

Conclusiones

El procedimiento anterior puede ser útil en algunos casos otros moltidutine, con NSLog() , no tienen nada que hacer. Las instrucciones condicionales pueden ayudar a que el compilador en una amplia gama de contextos. A menudo se utilizan por los programadores para determinar el tipo de versión del sistema operativo, el objetivo, la presencia de los procesadores matemáticos, mientras se mantiene la misma "idéntico" fuente.

Para entender esto, como ejemplo, podemos utilizzre nuestro constante MIO_DEBUG también para intervenir en otras áreas del código:

1
2
3
4
5
6
7
8
9
10
/ / Debug si ganan el juego
/ / Con una puntuación de 100 en vez de 10000 :)
# Ifdef MIO_DEBUG
score == 100 ) if (puntaje == 100)
# Else
score == 10000 ) if (puntaje == 10000)
# Endif
{
; [HaiVinto mismo];
}

Para terminar, he aquí algunos ejemplos y variantes:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/ / En general, hay una
# Si la expresión
/ / Si la declaración similar a la tradicional, por lo que con una expresión completa

/ / Comprobar si una constante se define
# Constante Ifdef

/ / Comprobar si NO es una constante definida
# Ifndef constante

/ / Else
# Else

/ / Cierre del bloque
# Endif
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/ / Por ejemplo ...
# Define DEBUG 1
# Definir MIA_ALTRA_COSTANTE 5

...
# Si DEBUG
/ / Rellena el siguiente
# Else
/ / En caso contrario rellene este otro
# Endif

# Si MIA_ALTRA_COSTANTE> 4
"..." ) ; NSLog (@ "...");
# Endif
1
2
3
4
# Ifndef INCLUDE_MIO_FILE
# Definir INCLUDE_MIO_FILE
# Include "mio_file.h"
# Endif

Más información ...

iPhone FirstApp: Adivinar el número - Parte 1

La primera fuente que me fui en sus manos ha sido escrito en básico y consistía en unas pocas líneas de código, para iluminar a mí. Era un juego simple que genera un número aleatorio de 1 a 10 y, a través de la entrada de teclado, demostró que el número introducido era Maggione, de menos o igual que el número aleatorio. A pesar de su simplicidad en bruto sigue siendo, para mí, uno de los mejores ejemplos, sencilla, divertida y práctica - para explicar a aquellos que no saben nada acerca de la programación lo que se entiende realmente por "programa de ordenador". Así que me decidí a proponer para el iPhone de Apple, tal vez ayude a alguien ...

Más información ...

Objective-C: tipo de conversión

En algunos lenguajes de alto nivel, tales como JavaScript o PHP, donde los datos no se escriben o de otra manera no puede ser, que son "mal estado" en comparar o convertir cadenas y números enteros y viceversa, todo escondido o manipulado por el intérprete (o compilador ). Por ejemplo, en funciones de Javascript están "obligados" (como parseInt() , por ejemplo) se requiere en casos especiales. Sin embargo, en otras circunstancias el tratamiento de los números enteros sin preocuparse de las conversiones de particulares (explícito), tales como:

1
2
3
5 ; mioNumero var = 5;
/ / ...
"Il valore di mioNumero è " + mioNumero ) ; alert ("El valor es mioNumero" mioNumero +);

Objective-C, sin embargo, el tipo de datos es importante y el tipo de conversión debe ser expresa. Además de la fundición (mejor encasillamiento) podemos usar las características y funcionalidades específicas para la conversión de tipos. Por ejemplo, aquí es cómo convertir un entero en una cadena:

1
2
3
4
5 ; mioNumero int = 5;
miaStringa = [ NSString stringWithFormat : @ "%d" , mioNumero ] ; NSString * MyString = [ NSString stringWithFormat: @ "% d", mioNumero];
/ /
"miaStringa=%@ mioNumero=%i" , miaStringa, mioNumero ) ; NSLog (@ "% @ MyString = mioNumero =% s", MiCadena, mioNumero);

Por el contrario, aquí es cómo convertir una cadena a un entero:

1
2
3
4
miaStringa = @ "128" ; NSString * MyString = @ "128";
[ miaStringa integerValue ] ; mioNumero int = [miCadena IntegerValue];
/ /
"miaStringa=%@ mioNumero=%i" , miaStringa, mioNumero ) ; NSLog (@ "% @ MyString = mioNumero =% s", MiCadena, mioNumero);

Más información ...

fragmento de código de iPhone: UIAlertView

La clase UIAletrView le permite mostrar una ventana modal (animado) para informar y / o que se haga algo. El UIAlterView (ver las alertas) son muy cómodas y fáciles de usar. El manejo de la respuesta del usuario se resuelve por interceptar el índice del botón presionado. Para ver un simple UIAlterView acaba de escribir:

1
2
3
4
/ / Alerta con un simple botón, sin devolución de llamada
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" cancelButtonTitle : @ "Annulla" otherButtonTitles : nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Título" mensaje: @ "Mensaje" cancelButtonTitle: @ "Cancelar" otherButtonTitles: nil];
; [MyAlert espectáculo];
; [MyAlert liberación];

Y 'posible para añadir botones adicionales otherButtonTitles :

1
2
3
4
/ / Alerta con dos simples botones, sin devolución de llamada
[ [ UIAlertView UIAlertView MyAlert * = [[UIAlertView
; [MyAlert espectáculo];
; [MyAlert liberación];

: Para determinar qué botón se ha pulsado, sólo tiene que añadir delegate:self objeto de inicialización UIAlterView :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Alerta / / simple con dos botones y devoluciones de llamada
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Título" mensaje: @ "Mensaje" delegado: cancelButtonTitle auto: @ "Cancelar" otherButtonTitles: @ "Ok", nil];
; [MyAlert espectáculo];
; [MyAlert liberación];

/ / La devolución de llamada tiene la siguiente sintaxis

void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
buttonIndex ) { interruptores (buttonIndex) {
: caso 1:
/ / Código
break;
}
}

La devolución de llamada alertView necesita tener ese nombre, para obtener más información, consulte UIAlertViewDelegate

punteranno sempre a quella. Con sólo el callbck alertView:clickedButtonAtIndex más UIAletrView siempre apuntará a eso. Usando la etiqueta de campo del objeto UIAletrView , podemos determinar cuál es el "llamador":

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Alerta / / simple con dos botones y devoluciones de llamada
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Título" mensaje: @ "Mensaje" delegado: cancelButtonTitle auto: @ "Cancelar" otherButtonTitles: @ "Ok", nil];
; myAlertA.tag = 1;
; [MyAlertA espectáculo];
; [MyAlertA liberación];

/ /
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" message : @ "Messaggio" delegate : self cancelButtonTitle : @ "Annulla" otherButtonTitles : @ "Ok" , nil ] ; UIAlertView myAlertB * = [[UIAlertView alloc] initWithTitle: @ "Título" mensaje: @ "Mensaje" delegado: cancelButtonTitle auto: @ "Cancelar" otherButtonTitles: @ "Ok", nil];
; myAlertA.tag = 2;
; [MyAlertB espectáculo];
; [MyAlertB liberación];

/ / Múltiples gestión UIAlertView

void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
"Alert Tag: %i" , alertView.tag ) ; NSLog (@ "etiquetas de alerta:% s", alertView.tag);
"buttonIndex: %i" , buttonIndex ) ; NSLog (@ "buttonIndex:% s", buttonIndex);
}

Más información ...

iPhone Objective-C: la equivalencia en la sintaxis

La sintaxis con corchetes en Objective-C es una de las razones más frustración para los que vienen de otros idiomas (de objetos). Sin embargo, se acostumbra a ella, te das cuenta de cómo leer el código se vuelve demasiado con esta mezcla de la sintaxis clásica y el palique con más claridad. Por ejemplo, podemos ver cómo el mismo procedimiento se puede escribir tanto en la sintaxis. Tome la inicialización de un UIAlertView :

1
2
3
4
5
6
7
8
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Título"
"Messaggio" mensaje: @ "Mensaje"
delegado: auto
"Annulla" cancelButtonTitle: @ "Cancelar"
"Ok" , nil ] ; otherButtonTitles: @ "Ok", nil];
; myAlert.tag = 1;
; [MyAlert espectáculo];
; [MyAlert liberación];

Ajuste de la etiqueta de potavamo que aun así:

1
2
3
4
5
6
7
8
[ [ UIAlertView alloc ] initWithTitle : @ "Titolo" UIAlertView MyAlert * = [[UIAlertView alloc] initWithTitle: @ "Título"
"Messaggio" mensaje: @ "Mensaje"
delegado: auto
"Annulla" cancelButtonTitle: @ "Cancelar"
"Ok" , nil ] ; otherButtonTitles: @ "Ok", nil];
1 ] ; [MyAlert AJUSTES: 1];
; [MyAlert espectáculo];
; [MyAlert liberación];

Lo mismo en la lectura durante el evento:

1
2
3
4
5
void ) alertView : ( UIAlertView * ) alertView clickedButtonAtIndex : ( NSInteger ) buttonIndex { - (Void) alertView: (UIAlertView *) clickedButtonAtIndex alertView: (NSInteger) {buttonIndex
alertView.tag == 1 ) { // ... if (alertView.tag == 1) {/ / ...
/ / O
alertView tag ] == 1 ) { // ... if ([alertView tag] == 1) {/ / ...
}

Nota: No todas las propiedades o métodos tienen esta sintaxis dual. En el caso de ' UIAlertView que tienen esta característica doble. Para otros objetos, o en otros casos, sin embargo, puede trabajar sólo uno de los dos ... pero no preguntes por qué (en función de cómo los desarrolladores han definido la interfaz).

Más información ...

Seguimiento Actionscript, Objective-C NSLog ()

, usata per il debug delle applicazioni. Tomando el puesto de ActionScript a Objective-C (donde se coloca el código y la comparación de la sintaxis de ActionScript y Objective-C) en Actionscript tenemos la conveniente función trace ( ) , que se utiliza para aplicaciones de depuración. Esta función genera una salida para el medio ambiente consola Adobe desarrollo flash. Se utiliza principalmente durante el desarrollo y ensayo de "película" / aplicación. En XCode / Objective-C tenemos: NSLog ( ) . di Actionscript: La sintaxis de esta función es muy similar a la trace ( ) en Actionscript:

1
"Sono una linea di debug" ) ; NSLog (@ "Soy una línea de depuración");

En ActionScript, tenemos:

1
"Sono una linea di debug" ) ; trace ("Soy una línea de depuración");

Aparte del uso de la arroba (@), como se puede ver, son idénticos. Las diferencias (y similitudes) comienzan cuando se quiere mostrar los valores de las variables, por ejemplo, en ActionScript tenemos:

1
2
3
"Coordinata x:" + x + " coordinata y:" + y ) ; trace ("coordenada x:" + x + "coordenada:" + y);
/ / O
"Coordinate: " , x , y ) ; trace ("coordenadas" x, y);

En Objective-C tenemos:

1
"Coordinata x:%i coordinata y:%i" , x, y ) ; NSLog (@ "coordenada x: la coordenada%% i", x, y);

che opera sull'Apple System Log. Nota: NSLog() en realidad llama a la función más genérica NSLogv ( ) que funciona en el registro del sistema de Apple. Las funciones son idénticas, de hecho, sólo cambiando los parámetros de entrada.

o sprintf ( ) . Los desarrolladores de C se encuentra muy familiarizado con el formato de cadenas, al igual que printf ( ) o sprintf ( ) . Para obtener más información, consulte especificadores de formato de cadena .

Más información ...

Muy corto truco: NSTimer parada

El uso de temporizadores ( NSTimer ) para desarrollar aplicaciones para el iPhone de Apple es muy frecuente, no sólo en la fabricación de juegos. Uno de los problemas con que se puede chocar es la asincronía del temporizador, que puede dar lugar, durante la detención de uno o más contadores de tiempo, la caída de nuestra aplicación. , si invoca la invalidate che, appunto, arresta il timer. Cuando desee detener uno o varios temporizadores, que repeats se establece en YES , se llama a la invalidate que, de hecho, detener el temporizador.

Más información ...



Deje de SOPA