EDIT_v002
Ho dato un'occhiata a tutti i commenti e sto iniziando a vedere cosa dovrei fare. A tal fine ho modificato il mio codice (vedi sotto) Ho cambiato newPath in una NSString, rimosso [[alloc] init] e la fine [release] come ora gestita dal sistema. Sto usando stringByAppendingPathComponent, permettendogli di aggiungere un separatore tra rootPath e fileName prima di essere assegnato a NSString. Funziona e l'ho eseguito attraverso l'analizzatore statico senza problemi.stringByAppendingPathComponent, come funziona?
// ------------------------------------------------------------------- **
// DISC: FILEWALKER ..... (cocoa_fileWalker.m)
// DESC: List all "*.png" files in specified directory
// ------------------------------------------------------------------- **
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *fileName;
NSDictionary *attrDir;
NSError *myError;
NSNumber *fileSize;
NSFileManager *manager = [NSFileManager defaultManager];
NSString *rootPath = [@"~/Pictures/Ren/PRMan" stringByExpandingTildeInPath];
NSString *newPath;
NSLog(@"Home: %@",rootPath);
for(fileName in [manager enumeratorAtPath:rootPath]){
if ([[fileName pathExtension] isEqual:@"png"]) {
newPath = [rootPath stringByAppendingPathComponent:fileName];
attrDir = [manager attributesOfItemAtPath:newPath error:&myError];
fileSize = [attrDir objectForKey: @"NSFileSize"];
NSLog(@"File: %@ Size: %@", newPath, fileSize);
}
}
[pool drain];
return 0;
}
// ------------------------------------------------------------------- **
Gary
Quindi in sostanza si forniscono i componenti del percorso e stringByAppendingPathComponent aggiunge il separatore? Inoltre non riesco a vedere come dici che non funziona, sul mio sistema elenca tutte e 4 le immagini EXR nel percorso. Fondamentalmente newPath viene prima assegnato, quindi viene semplicemente reimpostato e ricostruito ogni volta intorno al ciclo, ottenendo infine il rilascio alla fine. – fuzzygoat
Sì. Normalmente si fornisce solo un componente di percorso, ma un sottotracciato funziona altrettanto bene. –
Inoltre: hai ragione su 'newPath'. Scusa per la confusione su questo; Non ho visto il tuo messaggio 'setString:'. Ho eliminato il paragrafo, poiché non si applica al codice nella versione corrente della tua domanda. –