Obviously, something is happening, which is not clear. I would suggest adding a few log messages to make sure that the actual timing is what you think:
Then addend you cancelation code with this:
NSLog(@"Will cancel connection=%@", mgr.theConnection);
[mgr.theConnection cancel];
NSLog(@"Did cancel connection");
mgr.theConnection = nil;
NSLog(@"Did release connection");
, , . , - . , , , " " , "" .
EDIT: , mgr mgr theConnection property, . . , nil , , NSLogs .