Declare a property that is a copy of the block:
@property(nonatomic, copy) void (^completionBlock)(NSDictionary *);
Assign it in uploadFile:
- (void)uploadFile:(NSString *)url success:(void (^)(NSDictionary *))completionBlock {
self.completionBlock = completionBlock;
// ...
Then call it whenever you want:
if (self.completionBlock) self.completionBlock(someDictionary);
self.completionBlock = nil; // see below
Remember that, if you don't need the block again (which you probably don't since the download is complete) that it's a good practice to nil out your copy of the block. This way, if the caller refers to the download manager within the block, you'll break the retain cycle for him (the block would retain the download manager which retains the block).