Domanda

Ho bisogno di un po 'di aiuto con NSTask. Inoltre, Sono nuovo di programmazione Cocoa / Obj-C, quindi si prega di portare con me. Sto cercando di creare una directory. Poi, rimuoverlo. Così qui è quello che ho finora:

NSLog (@"START");

NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/mkdir"];

NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"/tmp/TEMP", nil];
[task setArguments: arguments];

NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
[task setStandardError: pipe];

NSFileHandle *file;
file = [pipe fileHandleForReading];

NSLog (@"MKDIR");

[task launch];
[task waitUntilExit];

NSData *data;
data = [file readDataToEndOfFile];

string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];

NSLog (@"OUTPUT:\n%@", string);

[task release];
//EDIT: The following lines should be removed and [string release]; should be added.
[arguments release];
[pipe release];
[file release];
[data release];

La mia domanda è se la parte verso la fine di "release" -zione è corretta? In caso contrario, qualcuno può aiutarmi mi correggerlo? Inoltre, se volevo fare un altro NSTask di "rmdir", dovrei solo fare "task = [[NSTask alloc] init];" e così via per ogni variabile che ho usato o avrò bisogno di fare nuove variabili? Thanks a lot!

È stato utile?

Soluzione

Per prima cosa, no, non si gestisce correttamente la memoria (suggerimento: solo task è correttamente gestita sopra). Leggi questo come si spiega tutto.

In secondo luogo, non v'è alcuna necessità di utilizzare un'istanza NSTask di make / cancellare una directory. Si dovrebbe usare NSFileManager invece; ancora una volta - la documentazione spiega tutto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top