Algunas preguntas para principiantes de Objective-C / iPhone

Estoy empezando (leyendo mucho en los últimos días). Aquí hay algunas preguntas que he apilado, espero que alguien pueda responderlas.

1. the (self! = nil) check in en el código de inicializador. ¿Por que hacerlo? ¿Para evitar el acceso accidental a algún código de "ejecutar solo una vez" que está envuelto allí? ¿De dónde podría venir este acceso accidental? Hacer tales controles sugiere que no tengo control sobre lo que está sucediendo.

- (id)init {
    self = [super init]
    if (self != nil) {
    // Code..
    }
    return self;
}

2. ¿Cómo es que no tiene que liberar nada de lo que devuelven los métodos estáticos? (o esta es la idea que tengo)

3. ¿Cómo está str = @ "Hola!" diferente de

str = [[NSString alloc] initWithString:@"Hi there!"];

Según tengo entendido, ¿tiene que liberar str en adquirido con el segundo método, pero no con el primero? Si es así, ¿cuándo se lanza el primero? ¿Cuál es preferible (sin importar la longitud de escritura)?

4. ¿Qué es el lanzamiento automático si el iPhone no tiene recolección de basura? He notado que se está creando algo llamado "un grupo de liberación automática" en main.m. Es [lanzamiento automático de myObject]; una forma de agregar myObject al "grupo de liberación automática" envolvente más cercano, ¿cuál lo liberará? Básicamente, ¿algo de magia para evitar liberarlo tú mismo? ¿Por qué usarlo?

Bueno eso es todo por ahora. Gracias por cualquier respuesta!

Respuestas a la pregunta(5)

Su respuesta a la pregunta