El instrumento Leaks en Xcode me muestra una pérdida de memoria aquí. He comentado la línea afectada por la cual Leaks se queja. Pero veo ningún error en mi gestión de memoria ...¿Por qué este código produce una pérdida de memoria?
- (void)setupViewController {
MyViewController *myVC = [[MyViewController alloc] init];
UITabBarItem *tbi = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemDownloads tag:1];
myVC.tabBarItem = tbi; // LEAK: 128 bytes
self.myViewController = myVC;
[myVC release];
[tbi release];
}
quiero decir ... TBI y myVC se libera al final, y el alloc es equilibrada. ¿Así que qué hay de malo? No lo entiendo
La propiedad tabbar de myVC debe ser una propiedad definida para conservar. Si lo hace, la retención de los objetos asignados a la propiedad se mantendrá automáticamente. – TechZen
, pero tabBarItem es de Apple, no de mí ;-) No creé ninguna propiedad tabBarItem para mi View Controller. Apple lo hizo Sería contrario a las reglas de administración de memoria liberar manualmente myVC.tabBarItem solo porque Apple lo haya olvidado, ¿no es así? – dontWatchMyProfile
'tabBarItem' es una propiedad con semántica' retain'. Es muy poco probable que haya una fuga en el colocador. –