Please remove the weak
qualification on the ASIFormDataRequest. The naming implies that this shouldn't be a problem, but there's a scenario where the request is immediately deallocated and nulled. This might appear as a hang if the only UI update happens in the completion blocks.
At the very least, that weak qualifier is unnecessary.
If the ASIFormDataRequest retains the block (which it shouldn't, because if they tell you to use it for responseData, then it's encouraging a retain cycle), you can keep a normal pointer, but get around the cycle this way:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
__weak ASIFormDataRequest *weakRequest = request;
// replace all references to 'request' inside the block with 'weakRequest'