Das Leaks Instrument in Xcode zeigt mir hier ein Speicherleck. Ich habe die betroffene Linie kommentiert, über die Leaks sich beschwert. Aber ich sehe keinen Fehler in meiner Speicherverwaltung ...Warum produziert dieser Code ein Speicherleck?
- (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];
}
ich meine ... TBI und myVC am Ende freigegeben und die alloc ausgeglichen ist. Also, was ist falsch? Ich verstehe es nicht.
Die Tabbar-Eigenschaft von myVC sollte eine Eigenschaft sein, die beibehalten werden soll. Wenn Sie dies tun, wird die Aufbewahrung von Objekten, die der Eigenschaft zugewiesen sind, automatisch beibehalten. – TechZen
naja, aber tabBarItem stammt von Apple, nicht von mir ;-) Ich habe keine tabBarItem-Eigenschaft für meinen View-Controller erstellt. Apple hat es getan. Es wäre gegen die Speicherverwaltungsregeln, wenn ich myVC.tabBarItem manuell freigeben würde, nur weil Apple es vergessen hat, oder? – dontWatchMyProfile
'tabBarItem' ist eine Eigenschaft mit' retain'-Semantik. Es ist sehr unwahrscheinlich, dass es im Setzer ein Leck gibt. –