Какао NSTask, помогите - PullRequest
       7

Какао NSTask, помогите

0 голосов
/ 07 июля 2010

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

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 Ответ

1 голос
/ 07 июля 2010

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

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

...