Pregunta

Bueno, he comenzado con la programación de iPod / iPhone con la cabeza primer iPhone Desarrollo (O'Reilly) y yo estoy escribiendo código del libro. Hay dos problemas, uno es la programación relacionada y el otro no lo es.

  • No entiendo el formato de los métodos de Objective-C. Recibo un par de errores ahora, basado en el código fuente del libro. Que lleva yo a mi siguiente tema.

  • Parte del código está libre de errores. Creo que sí, porque no podía obtener el código se ejecute sin modificarlo. El libro tiene algunos errores tipográficos en el texto, ya que es una primera edición y todo eso, pero es posible que mi "fijar" el código tiene que ver con eso?

Así que ... ¿Dónde puedo encontrar más información sobre los métodos de Objective-C y cómo funcionan en términos de estructura y donde el tipo de retorno y argumentos van?

Para los que tienen el libro, estoy en el medio de la aplicación InstaTweet hacia el principio.

Gracias.

¿Fue útil?

Solución

Tal vez una comparación entre un lenguaje "C-like" y obj-c sería útil - vamos a ir con Java. Imagínese una clase rectángulo con un método setBackgroundColor. Vamos a suponer que tenemos un ejemplo del rectángulo llamado rect.

En Java, la firma del método sería probablemente

public void setBackgroundColor(int r, int g, int b) { ... }

En Objective-C, los argumentos son parte de la firma del método, por lo que podrían ser

- (void)setBackgroundColorWithRed:(int)r green:(int)g blue:(int)b;

El "-" significa que es un método de instancia de la clase Rectángulo. (Void) es el tipo de retorno del método. Luego vienen los argumentos. Cada dos puntos define un argumento, que se escribe (cada arg es (int) en este ejemplo).

Vamos a comparar llamar a estos métodos. Java:

rect.setBackgroundColor(255, 255, 0);

Obj-c:

[rect setBackgroundColorWithRed:255 green:255 blue:0];

Mucha gente tropieza sobre la sintaxis de obj-c - usted no está solo. Con suerte esta comparación hará las cosas más claras. También ejemplifica una fuerza lingüística de Objective-C: en el momento de la llamada, está claro cuáles son sus argumentos son. Si estuviera leyendo el código y vi el método de Java que se llama, no sería obvio que los argumentos son de color rojo, azul y verde. En obj-c, es dolorosamente claro que estamos estableciendo valores de color individuales. Por supuesto, la mayoría de los desarrolladores pueden adivinar lo que los tres argumentos a un método setColor son, pero los métodos más complejos a confusión. Aquí es un método más complejo se define en Java y objetivo-c:

static Dog createDog(  String name
                     , int age
                     , boolean isNeutered
                     , String ownerName
                    );
+ (Dog *)createDogNamed:(NSString *)name 
     age:     (int)        age 
     neutered:(BOOL)       isNeutered 
     owner:   (NSString *) owner;

A la hora de llamada:

Dog.createDog("Fluffy", 2, true, "Moshe");
[Dog createDogNamed:@"Fluffy" age:2 neutered:YES owner:@"Moshe"];

Objetivo-c es más prolija, pero mucho más fácil de leer. En el ejemplo de Java, no es muy claro lo que significan los "2" y argumentos "verdaderos". Objetivo-c casi se lee como Inglés.

Otras personas han publicado enlaces a más guías en profundidad, pero espero que esto te lleva más allá de los obstáculos sintácticas suficientes para hacer los enlaces útiles. Estoy feliz de responder a las preguntas más específicas que tiene. En mi experiencia, obj-c novatos tienen un tiempo muy duro con la sintaxis y, a continuación, clic s y se siente brillante. Colgar en él!

Otros consejos

La definición de un método de Objective-C es bastante sencillo. Es bastante similar a la definición llamada a la función C regular, en realidad. La gran adición es la opción de nombrar los parámetros. He aquí un ejemplo:

-(int)addX:(int)x toY:(int)y
{
    return x + y;
}

¿Qué se puede utilizar mediante el envío de un mensaje al objeto apropiado:

int z = [object addX:x toY:y];

En este caso me he dado los parámetros y los argumentos de los mismos nombres, para que quede claro cómo las cosas se alinean. Usted podría fácilmente hacer:

int z = [object addX:4 toY:7];

Y después de eso, z será de 11.

introducción de Apple con el Objetivo C .

El formato básico es el método

-(ReturnType *)methodName:(VariableType *)variableName{

}

Por ejemplo:

-(NSString *)giveMeANewStringFromAnOldString:(NSString *)oldString{

}

También debe comprobar el sitio web del libro para la fe de erratas.

Yo hice lo mismo que lo hizo. Cogí el libro La cabeza primero iPhone Desarrollo también (que cubre 3.1 SDK).

Me encontré a través de todos los tutoriales en él y sólo encontré 1 error que provocó que mi solicitud no funciona (Hice una nota de ello en mi libro, pero no puedo encontrar ahora ...).

Así que después de que me di cuenta que tenía exactamente el mismo problema que se tiene con la sintaxis.

Cogí "programación en Objective-C 2.0" de Stephen G. Kochan. (Es simplemente brillante.) El libro es clara y concisa. Ni siquiera pude llegar hasta el 25% del libro y se respondieron todas mis preguntas.

La lectura de código de Objective-C me lanzó durante meses porque estoy tan acostumbrado a una sintaxis diferente que mi cerebro tomó un poco de tiempo para adaptarse a la forma en Objective-C espera.

Lo que estoy encontrando es el código de Objective-C se vuelve realmente legible, una vez que se coloca el cerebro a su alrededor. El ejemplo de Carl Norum anterior es una gran demostración de la lectura.

[object addX:4 toY:7];

No se puede pedir mucho más legible que eso!

también alguna terminología es un poco diferente. "Los mensajes de un objeto" vs "llamar a un método" Me tiró por algunas semanas también.

Espero que la recomendación del libro le ayuda, lo que realmente me ha ayudado mucho.

Hay algunos grandes recursos para el aprendizaje de Apple:

Objetivo de aprendizaje-C: A Primer

y

Codificación Directrices para Cacao

Buena suerte!

Cacao (R) de programación para Mac (R) OS X (3ª edición) , que es la biblia para Mac y cacao.

No he tenido ningún problema con ella, pero tener en cuenta que la API siempre se están moviendo hacia adelante por lo que podría haber ligeras actualizaciones / cambios. Pero no he encontrado nada que me impediría terminar todos los ejemplos de código y ejercicios.

Este es el libro para leer.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top