Endereçamento e ponteiros em Objective C

votos
0

Então aqui está o problema.

Eu tenho um método (ou mensagem, como são chamados em obj-C) Eu estou passando um ponteiro para um objeto.

dentro desse método eu vou mudar o que esse ponteiro está apontando para, e liberar o objeto antigo. E eu gostaria que a variável de instância (que está sendo passado para o método) para referenciar agora o novo valor atribuído a ele. basicamente tendo a variável operam como um parâmetro OUT em linguagens como C #

-(NSDictionary *) GetListWithCommand:(NSString*) command andCache:(CachedMutableDictionary*) cache  
{  
    CachedMutableDictionary* Dictionary = [Getfrom somesource];
    CachedMutableDictionary* temp = cache;  
    cache = [Dictionary retain];  
    [temp release];  
}  

Então eu acredito que eu preciso enviar um endereço-de referência para a variável de cache e, em seguida, ser capaz de se referir a ele tanto a nível endereço ou no nível do objeto.

ele também pode ser mais sábio / mais fácil para criar um método de cópia da classe CachedMutableDictionary.

Publicado 19/05/2009 em 14:19
fonte usuário
Em outras línguas...                            


2 respostas

votos
5

Você apenas tem que adicionar algumas estrelas aqui e ali:

-(NSDictionary *) GetListWithCommand:(NSString*) command
                            andCache:(CachedMutableDictionary**) cache  
{  
    CachedMutableDictionary* Dictionary = [Getfrom somesource];
    CachedMutableDictionary* temp = *cache;  
    *cache = [Dictionary retain];  
    [temp release];  
}
Respondeu 19/05/2009 em 14:29
fonte usuário

votos
1

Sim, parece que este método precisa tomar uma CachedMutableDictionary ** ao qual o chamador passa e cache. As três últimas linhas do método tornar-se:

CachedMutableDictionary *temp = *cache;
*cache = [Dictionary retain];  
[temp release];

Isso cheira engraçado para mim embora. Onde é que o cache vêm originalmente? É sempre uma variável de instância de um objeto? Porque não basta passar o objeto?

Respondeu 19/05/2009 em 14:26
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more