Lo strumento Leaks in Xcode mi mostra una perdita di memoria qui. Ho commentato la linea interessata di cui Leaks si lamenta. Ma non vedo alcun errore nel mio gestione della memoria ...Perché questo codice produce una perdita di 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];
}
Voglio dire ... TBI e myVC viene rilasciato alla fine, e l'alloc è equilibrato. Quindi cosa c'è che non va? Non capisco
La proprietà tabbar di myVC deve essere una proprietà definita da conservare. Se lo fai, la conservazione degli oggetti assegnati alla proprietà verrà mantenuta automaticamente. – TechZen
bene, ma tabBarItem è di Apple, non da me ;-) Non ho creato alcuna proprietà tabBarItem per il mio controller di visualizzazione. Apple ha fatto. Sarebbe contro le regole di gestione della memoria se rilascio manualmente myVC.tabBarItem solo perché Apple ha dimenticato di farlo, no? – dontWatchMyProfile
'tabBarItem' è una proprietà con la semantica' retain'. È molto improbabile che ci sia una perdita nel setter. –