como adicionar um argumento extra a um bloco

Mailcore tem um friométodo que baixa um anexo e aceita um bloco como parâmetro para retornar o progresso do download:

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

onde CTProgressBlock é definido como

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

então normalmente eu usaria assim:

//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);
}];

o problema é que este último método é chamado pela minha classe de interface principalFileBucket.m e essa classe, por sua vez, está buscando vários anexos para vários elementos da interface do usuário em seqüência. Gostaria que esse método de retorno de chamada fosse relatado paraFileBucket.m qual anexo este progresso pertence a .. então, em outras palavras, eu quero algo ao longo das linhas de:

// 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);
}];

Eu sei que isso é difícil de explicar / ilustrar .. uma coisa extra:AttachmentDownloader.m está ciente de qual anexo este progresso é sobre .. mas ele só quer passá-lo de volta paraFileBucket.m toda vez o bloco de retorno de chamada é chamado.

questionAnswers(2)

yourAnswerToTheQuestion