문제

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

도움이 되었습니까?

해결책

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.

다른 팁

Blocks support for all the basic delegate tasks on RKRequest and RKObjectLoader will be coming in 0.9.4

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.

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]); 
    };
}];
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top