问题
i have been using the block support extensively in ASIHttpRequest, and i have found it to be an extremely elegant way of coding async requests, much more so than having the delegate call back a seperate function
Here is the example code for quick reference.
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setCompletionBlock:^{
NSString *responseString = [request responseString];
}];
[request startAsynchronous];
I would like to start using Restkit, but I need to be able to use Restkit with blocks as well.
I have seen the wrapper here Restkit Block Wrapper, but would like to check if that wrapper would work well in production, and if anyone have used it extensively before
回答1:
I have not used the RestKit Block wrapper yet, but I will be shortly. I'm actually removing ASIHTTPRequest from my App and replacing with RestKit. Not because it's bad, ASIHTTP* is quite stable - but it isn't evolving. While many other libraries, like RestKit, wrap NSURLConnection and so reap the benefits of Apples continuing enhancements to it, ASIHTTP* uses CFNetwork. Apple isn't investing a lot of effort in improving preexisting Core Foundation classes (like CFNetwork). Also, since ASIHTTP* depends on CF, it's going to be a royal pain to migrate to ARC when it's available; I wan't the benefits of ARC as soon as possible.
回答2:
Blocks support for all the basic delegate tasks on RKRequest and RKObjectLoader will be coming in 0.9.4
回答3:
Yesterday, Blake released verson 0.9.3 which features the usage of blocks for the Object Mapper (other methods were already ready for blocks). You should take look at the new features.
回答4:
For a quick code sample to use RestKit with blocks, I derived this snippet from http://kalapun.com/blog/2012/05/17/how-i-restkit/
[[RKClient sharedClient] get:@"/fooBar" usingBlock:^(RKRequest *request) {
request.onDidLoadResponse = ^(RKResponse *response) {
NSLog(@"Retrieved XML: %@", [response bodyAsString]);
};
}];
来源:https://stackoverflow.com/questions/6313378/using-blocks-in-restkit-like-asihttprequest-blocks