Cacao NSTask aiuto
-
02-10-2019 - |
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!
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.