Alguns iniciantes Objective-C / iPhone perguntas

Estou apenas começando (lendo bastante nos últimos dias). Aqui estão algumas perguntas que empilhamos, espero que alguém possa respondê-la

1. a verificação (self! = nil) no código do inicializador. Por que fazê-lo? Para impedir o acesso acidental a algum código "executar apenas uma vez" que está incluído aí? De onde veio esse acesso acidental? Fazer essas verificações sugere que eu não tenho controle sobre o que está acontecend

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

2. Como é que você não precisa liberar nada que retorne métodos estáticos? (ou esta é a ideia que tenho)

3. Como é str = @ "Olá!" diferente d

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

Como eu entendo, você tem que liberar str adquirido com o segundo método, mas não com o primeiro? Em caso afirmativo, quando o primeiro será lançado? Qual é o preferido (sem importar o tamanho da digitação)?

4. O que é liberação automática, se o iphone não tiver coleta de lixo? Percebi que algo chamado "um pool de autorelease" está sendo criado em main.m. É [liberação autorizada do myObject]; uma maneira de adicionar myObject ao "pool de autorelease" mais próximo, que o liberará? Basicamente, alguma mágica para evitar lançá-lo você mesmo? Por que usá-lo?

Bem isso é tudo por agora. Obrigado por todas as respostas!

questionAnswers(5)

yourAnswerToTheQuestion