Попробуйте использовать ассоциативные ссылки , чтобы связать URL-адрес файла / путь с каждым экземпляром задачи. Каждый объект может иметь несколько связанных объектов, и каждый связанный объект имеет соответствующий ключ, который используется для ссылки на связанный объект при необходимости.
В вашем контроллере создайте переменную static
, которая представляет URL-адрес файла / ключ пути:
static char fileURLKey;
При создании экземпляра NSTask
свяжите соответствующий URL-адрес файла с этим экземпляром:
NSURL *fileURL = …;
NSTask *task = …;
objc_setAssociatedObject(task, &fileURLKey, fileURL, OBJC_ASSOCIATION_RETAIN);
Когда задача завершится, получите задачу из объекта уведомления, а затем получите URL файла из задачи:
NSTask *task = [notification object];
NSURL *fileURL = (NSURL *)objc_getAssociatedObject(task, &fileURLKey);