Reter informações no cacau?
-
27-09-2019 - |
Pergunta
Eu ainda sou novo para Cacau e não sei muito sobre o gerenciamento de memória.Eu li até de produtos da Apple na documentação, mas eu ainda estou confuso.A minha pergunta é se eu definir o valor de uma variável em um - (void)dowhatever
quando dowhatever
termina, o conteúdo da variável a ser apagada?Se assim é, não há um método (sem escrever para um arquivo) que eu possa usar para reter o conteúdo da variável?
Obrigado por qualquer ajuda
Solução
A minha pergunta é se eu definir o valor de uma variável em um
- (void)dowhatever
quando o vazio termina, ...
void
é um tipo.Ele não tem começo e não tem fim.
Especificamente, é o tipo de retorno do dowhatever
o método.Se dowhatever
retornou um valor, o tipo do valor de retorno seria o caso de você ter void
;seria dizer, por exemplo, - (NSUInteger) doWhatever
.Ter void
não significa que o método não retorna um valor.
Veja também O Objective-C 2.0 Linguagem De Programação documento.
... será que o conteúdo da variável a ser apagada?
Se é uma variável local e, em seguida, a variável deixa de existir quando o método retorna.
Uma variável de instância existe enquanto a instância (objeto) que a variável é uma parte de sua existência, isto é, até que a instância é desalocada.
Variáveis de instância são também abordados no objective-C documentação.
Se assim é, não há um método (sem escrever para um arquivo) que eu possa usar para reter o conteúdo da variável?
Se você simplesmente precisa devolver o objeto para o seu interlocutor, retê-la e autorelease-lo.Ver o O Gerenciamento de memória do Guia de Programação para Cacau para obter mais informações.
Se isso não é o que você está fazendo, então a questão torna-se por você precisa o objeto para se manter vivo.
Pensar em termos de objetos:Um objeto pode possuir determinados outros objetos, e tem uma variável de instância para cada objeto possui*.Contanto que você tenha o seu posses de reta e a apoiá-los no código, objetos vidas, só trabalho.
Se Um objeto precisa de outro objeto B, então A deve possuir B.Esta propriedade não é exclusiva;ele pode co-próprio B.Mas ele precisa pelo menos co-B;B permanecerá viva contanto que tem pelo menos um proprietário.
Que também abordados no Guia de Gerenciamento de Memória.Para outros exemplos de relações entre os objetos, você deve percorrer o Cacau Fundamentos Guia, particularmente o capítulo sobre Cacau do design patterns, e você pode querer olhar através de código de exemplo para ver os padrões demonstrada na prática.
*Ele também pode ter variáveis de instância de objetos que ele não possui, como delegados.Você pode ter uma variável de instância de um objeto que não é seu, mas se você não possui-lo, você deve ter uma variável de instância para ele.