Question

main verte i am. J'utilise des instruments, et il a fait une grande aide pour moi jusqu'à présent, mais je suis confus maintenant parce que ce rapport a me fuite de mémoire alors que ses me montre l'histoire du bloc fuite que le comte ref de cette mémoire était finalement devenu 0 . Qu'est-ce que cela signifie?
Il est vraiment gênant que je ne pouvais pas poster une image ici ... donc je dois décrire dans le texte. Espérons que ce serait assez clair pour vous:

Type d'événement || RefCt || Bibliothèque Responsable || Responsable de l'appelant
malloc || 1 || MyWeather || + [ForecastData parseSingleForecastWithXMLElement:]
autorelease ||  || MyWeather || + [ForecastData parseSingleForecastWithXMLElement:]
|| conserver 2 || MyWeather || + [ForecastData parseWithData:]
|| relâchez 1 || Fondation || + [Vidange NSAutoreleasePool:]
|| conserver 2 || Fondation || + [NSThread initWithTarget: sélecteur: objet:]
|| relâchez 1 || Fondation || + [NSString comparer: Options:]
|| relâchez 0 || MyWeather || + [RootViewController dealloc]

Toute aide sera appréciée ~

Était-ce utile?

La solution

Il a été causé par le manque de [super dealloc] dans dealloc de forecastData, de sorte qu'une partie de la mémoire de forecastData est jamais libéré alors que le comte de conserver forecastData ne sont devenus nuls. Quoi qu'il en soit, merci les gars.

Autres conseils

vous ne fournissez pas beaucoup de code de l'échantillon afin qu'il puisse être quoi que ce soit. Le RefCount de MyWeather est égal à zéro, mais la Fondation est toujours l'un, alors peut-être que vous avez alloué une part NSSting un jamais sorti?

BTW. Je ne alloc init une chaîne, la mise en place du texte directement et laisser la gestion de la mémoire du reste. Je ne sais pas pourquoi, mais je pense qu'il est un peu buggé. Parfois, je reçois des erreurs étranges si je tente quelque chose comme ça:

NSString *str = [[NSString alloc] initWithString:@"some Text"];
myLabel.text = str;
[str release];

myLabel doit le conserver, mais il ne fonctionne pas. Je vais faire une erreur si je tente de release il. (Et une fuite sinon)

Si j'utilise

NSString *str = @"some Text";
myLabel.text = str;

il fonctionne très bien, pas d'erreur et pas de fuite.

Avez-vous essayé cela sur l'appareil? Parfois, vous pouvez voir des fuites apparaissent qui ne sont pas vraiment des fuites.

L'autre raison aurait pu être que vous aviez NSZombie activé, ce qui signifie que les objets ne sont pas vraiment libérés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top