hallo leute,
die folgenden methoden werden aufgerufen um pfade von bildern aus einer ordnerstruktur auszulesen. es sind rund 18500 bilder deren pfade in einen string gescrieben werden. der string soll am ende in eine datei geschrieben werden.
das problem an der ganzen sache: die methoden produzieren ein riesen speicherleck und ich hab keine ahnung wo. ich hoffe ihr könnt mir da weiter helfen.
	
		
			
		
		
	
			Alles anzeigen
		
								
			
ich weiss, das sind ein paar variablen drin die nicht benutzt werden. die brauche ich aber später noch.
die zweite methode ist rekursiv. sie wird aufgerufen, wenn ein ordner gefunden wurde.
sascha
									
									
								die folgenden methoden werden aufgerufen um pfade von bildern aus einer ordnerstruktur auszulesen. es sind rund 18500 bilder deren pfade in einen string gescrieben werden. der string soll am ende in eine datei geschrieben werden.
das problem an der ganzen sache: die methoden produzieren ein riesen speicherleck und ich hab keine ahnung wo. ich hoffe ihr könnt mir da weiter helfen.
Quellcode
- - (void) stockUpdate
- {
- NSString *path = [preferences objectForKey:@"prefs_stockPath"];
- if (![fileManager fileExistsAtPath:path])
- return; ///////////////////////////////////////// needs a message
- if (fileList)
- [fileList release];
- fileList = [[NSString string] retain];
- [self updateStock:@""];
- [fileList writeToFile:[[preferences objectForKey:@"prefs_dbPath"] stringByAppendingPathComponent:@"fileList.txt"] atomically:YES];
- [self showAll];
- NSRunAlertPanel(@"Think:Image", @"Stockupdate done!", @"OK", NULL, NULL);
- }
- - (void) updateStock: (NSString*) path
- {
- BOOL isDir;
- NSString *tmpPath, *imagePath, *stockPath = [preferences objectForKey:@"prefs_stockPath"], *trust, *str_imageID;
- NSString *virtFilePath, *sqlCommand, *fileName, *trustCode;
- NSArray *resultArray = [[NSArray array]retain];
- NSMutableArray *tmpArray = [[NSMutableArray array]retain];
- int i,j;
- tmpPath = [stockPath stringByAppendingPathComponent:path];
- tmpArray = [NSMutableArray arrayWithArray: [fileManager directoryContentsAtPath: tmpPath]];
- [tmpArray removeObject:@".DS_Store"];
- for (i=0;i<[tmpArray count];i++){
- imagePath = [tmpPath stringByAppendingPathComponent:[tmpArray objectAtIndex:i]];
- if ([fileManager fileExistsAtPath:imagePath isDirectory:&isDir] && isDir) {
- [self updateStock:[path stringByAppendingPathComponent:[tmpArray objectAtIndex:i]]];
- } else {
- fileName = [[imagePath lastPathComponent]stringByDeletingPathExtension];
- trust = [fileName substringWithRange:NSMakeRange(0,8)];
- [status setStringValue:[NSString stringWithFormat:@"%@ (%i/%i)",trust,i+1,[tmpArray count]]];
- [status display];
- virtFilePath = [path stringByAppendingString:@"/"];
- fileList = [fileList stringByAppendingFormat:@"%@%@\r",virtFilePath,[imagePath lastPathComponent]];
- }
- }
- [resultArray release];
- [tmpArray release];
- }
ich weiss, das sind ein paar variablen drin die nicht benutzt werden. die brauche ich aber später noch.
die zweite methode ist rekursiv. sie wird aufgerufen, wenn ein ordner gefunden wurde.
sascha