Je suis assez nouveau à l'objectif C pour l'iPhone, donc j'espère que vous ne me tuerez pas pour poser une question simple.La fuite de mémoire dans le renvoi NSMutableArray de la classe
J'ai fait une application qui fonctionne bien, sauf que Instruments signale des fuites de mémoire de la classe ci-dessous. Je l'utilise pour stocker les paramètres d'une classe, puis les récupérer dans une autre classe. Ces paramètres sont stockés dans un fichier afin qu'ils puissent être récupérés chaque fois que l'application est exécutée. Que puis-je faire pour libérer le "réglage" et y a-t-il quelque chose qui peut être fait pour appeler (utiliser) la classe d'une manière plus intelligente?
Merci
----- Below is Settings.m -----
#import "Settings.h"
@implementation Settings
@synthesize settings;
-(NSString *)dataFilePath // Return path for settingfile, including filename
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:kUserSettingsFileName];
}
-(NSMutableArray *)getParameters // Return settings from disk after checking if file exist (if not create with default values)
{
NSString *filePath = [self dataFilePath];
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) // Getting data from file
{
settings = [[NSMutableArray alloc] initWithContentsOfFile:filePath];
}
else // Creating default settings
{
settings = [[NSMutableArray alloc] initWithObjects:
[NSNumber numberWithInteger:50],
[NSNumber numberWithInteger:50],
nil];
[settings writeToFile:[self dataFilePath] atomically:YES];
}
return settings;
}
----- Below is my other class from where I call my Settings class -----
// Get settings from file
Settings *aSetting = [[Settings alloc] init];
mySettings = [aSetting getParameters];
[aSetting release];
Salut à nouveau. Essayé avec l'autorelease, mais ça ne marche pas. Toujours les mêmes résultats. Merci pour l'essai si. – Structurer
Plus de détails. Lorsque vous exécutez l'autorelease dans le code, l'application ne démarre pas sur le téléphone lorsque Instruments est en cours d'exécution. Sans instruments ça marche bien, mais donc ça ne marche pas autorelease ;-) – Structurer