2010-07-07 1 views
0

Мне нужна помощь в NSTask. Кроме того, я новичок в программировании Cocoa/Obj-C, поэтому, пожалуйста, несите меня. Я пытаюсь создать каталог. Затем удалите его. Так вот, что я до сих пор:Cocoa NSTask help

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]; 

Мой вопрос, если часть к концу про «отпустить» -ную правильно? Если нет, может кто-нибудь поможет мне исправить это? Кроме того, если бы я хотел сделать другой NSTask из «rmdir», я бы просто сделал «task = [[NSTask alloc] init];» и т. д. для каждой переменной, которую я использовал, или мне нужно будет создавать новые переменные? БОЛЬШОЕ СПАСИБО!

ответ

1

Во-первых, нет, вы неправильно управляете памятью (подсказка: только task правильно обрабатывается выше). Read this как он все объясняет.

Во-вторых, нет необходимости использовать экземпляр NSTask для создания/удаления каталога. Вместо этого вы должны использовать NSFileManager; снова - the documentation объясняет все.

+0

На самом деле, я просто использовал mkdir/rmdir в качестве примера. Я буду делать это для других команд, таких как dd, dns-sd, asr и т. Д. – hassaanm

Смежные вопросы