2011-06-08 30 views
6

tengo el siguiente código en mi método de clase para la prueba:¿Liberación de contenido de NSMutableDictionary?

NSMutableDictionary * temp = [[NSMutableDictionary alloc] init]; 
[temp setObject:@"4" forKey:@"Interval"]; 
interval = [temp objectForKey:@"Interval"]; 
[temp release]; 

intervalo es mi variable de instancia:

NSString * interval; 

y getter método para ello (no es la propiedad):

- (NSString *) getInterval { 
    return interval; 
} 

En alguna otra clase estoy intentando usar el método getInterval así:

NSString * test = [MyObject getInterval]; 

getInterval me devuelve el valor correcto de 4, lo veo en el depurador. No puedo entender, porque, según tengo entendido, el puntero a la variable de instancia de intervalo debe estar libre con la temperatura de NSMutableDictionary. ¿Por qué sucede eso?

Respuesta

8

@"4" es una constante/NSString objeto literal, literal y/constante NSStrings nunca son desasignado - esto es por lo que todavía se puede hacer referencia a esa cadena a pesar de que en teoría debería haber sido puesto en libertad (suponiendo que el diccionario fue el único propietario).

Esto no significa que no deba seguir las reglas de gestión de memoria adecuadas, por supuesto. Si desea conservar interval, debe conservarlo o copiarlo, posiblemente a través de una propiedad declarada.

Cuestiones relacionadas