как добавить дополнительный аргумент в блок

Mailcore имеет классныйметод который загружает вложение и принимает блок в качестве параметра для возврата прогресса загрузки:

- (CTCoreAttachment *)fetchFullAttachmentWithProgress:(CTProgressBlock)block;

где CTProgressBlock определяется как

typedef void (^CTProgressBlock)(size_t curr, size_t max);

поэтому, как правило, я бы использовал это так:

//AttachmentDownloader.m
int fileNum = x; // explained later
CTCoreAttachment* fullAttachment = 
    [attachment fetchFullAttachmentWithProgress:^(size_t curr, size_t max) {
    NSLog(@"::: this is curr: %zu", curr);
    NSLog(@"::: this is max: %zu\n\n", max);
}];

проблема в том, что этот последний метод вызывается моим основным классом пользовательского интерфейсаFileBucket.m и этот класс, в свою очередь, последовательно выбирает множество вложений для множества различных элементов пользовательского интерфейса. Я хотел бы, чтобы этот метод обратного вызова сообщалFileBucket.m к какому приложению относится этот прогресс .. другими словами, я хочу что-то вроде:

// FileBucket.m
[AttachmentDownloader runMultiple:attachmentTree 
                     withProgress:^(size_t curr, size_t max, int fileNum) {
    NSLog(@"::: this is curr: %zu", curr);
    NSLog(@"::: this is max: %zu\n\n", max);
    NSLog(@"::: this progress belongs to element %d", fileNum);
}];

Я знаю, что это трудно объяснить / проиллюстрировать ... еще одна вещь:AttachmentDownloader.m знает, о какой привязанности идет этот прогресс ... но он просто хочет передать ее обратноFileBucket.m каждый раз блок обратного вызова называется.

Ответы на вопрос(2)

Ваш ответ на вопрос