J'ai regardé partout en essayant de trouver une solution à ce problème. Rien ne semble aider.Im Stumped, Pourquoi la mémoire UIImage Texture2d n'est pas libérée
J'ai mis en place ce test de base pour essayer de trouver la cause de la raison pour laquelle ma mémoire n'a pas été libéré:
if (texture != nil)
{
[texture release];
texture = nil;
}
else
{
UIImage* ui = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image" ofType:@"png"]];
texture = [[Texture2D alloc] initWithImage:ui];
}
Maintenant je placer dans les touches et a commencé à tester en surveillant la l'utilisation de la mémoire en utilisant des instruments au début (normalement 11.5 - 12mb) après le premier contact, sans objet existant la texture est créée et la mémoire saute à 13.5 - 14
Cependant, après le deuxième contact, la mémoire diminue, mais seulement autour de 12,5 - 13.
Il y a un morceau de mémoire visible encore occupé.
Je l'ai testé à une échelle beaucoup plus grande, en chargeant 10 de ces grandes textures à la fois La mémoire saute à plus de 30 mb et reste là, mais au second contact après avoir relâché les textures elle tombe seulement autour de 22mb.
J'ai essayé le test une autre fois en chargeant les images avec [uiimage imagenamed:] mais en raison de la mise en cache, cette méthode fonctionne, cela signifie simplement que le 30mb reste en mémoire.
Merci pour votre temps, et une réponse si rapide :). Par souci de ce test, le seul endroit où cette texture est référencée (autre que dans la déclaration d'interface) est dans le code que j'ai posté. Je suis désespéré pour une explication et je peux juste essayer ces remplacements que vous avez suggérés. Cependant, je pense que le problème doit être quelque chose d'autre que je ne sais pas.Peut-être quelque chose de spécifique à Texture2D ou de la façon dont l'iPhone gère la mémoire, ou les instruments eux-mêmes. En utilisant le débogueur j'ai montré que les méthodes dealloc pour texture2d ont été appelées. – user331951