У меня проблемы с выполнением разных NSTask. То же самое launchPath
, другое arguments
. У меня есть класс, экземпляры которого управляют собственными NSTask
объектами, и в зависимости от аргументов эти экземпляры были инициализированы - создается зависимый NSTask
объект. У меня есть два инициализатора:
// Method for finished task
- (void)taskFinished:(NSNotification *)aNotification {
[myTask release];
myTask = nil;
[self createTask];
}
// Designated initializer
- (id) init {
self = [super init];
if (self != nil) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(taskFinished:)
name:NSTaskDidTerminateNotification
object:nil];
[self createTask];
}
return self;
}
// Convenience initializer
- (id)initWithCommand:(NSString *)subCommand {
self = [self init];
if (self)
{
[self setCommand:subCommand];
}
return self;
}
А вот метод createTask
:
- (void)createTask {
// myTask is a property defined as NSTask*
myTask = [[NSTask alloc] init];
[myTask setLaunchPath:@"/usr/bin/executable"];
}
Действия выполняются путем выбора разных строк в NSOutlineView (с использованием PXSourceList в качестве оболочки):
- (void)sourceListSelectionDidChange:(NSNotification *)notification {
id sourceList = [notification object];
NSIndexSet *selection = [sourceList selectedRowIndexes];
NSString *identifier = [[sourceList itemAtRow:[selection firstIndex]] identifier];
// this way `/usr/bin/executable ${identifier}` is being created
MyCommand *command = [[MyCommand alloc] initWithSubcommand:identifier];
// this method executes [myTask launch];
[command execute]
}
Проблема в том, что исполняется только первый. Вторые даже не вызывают событие «щелчка» (через target-action). Я думаю, что это может быть причиной запускаPath, который я пытаюсь использовать, потому что простой /bin/ls
работает нормально. Та же команда в терминале имеет 0 возвращаемое значение (т.е. все в порядке). Любые гиды или ошибки очень ценятся.