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!