Использование блоков в Restkit (например, блоков ASIHttpRequest) - PullRequest
7 голосов
/ 11 июня 2011

Я широко использую поддержку блоков в ASIHttpRequest, и я обнаружил, что это чрезвычайно элегантный способ кодирования асинхронных запросов, гораздо больше, чем когда делегат вызывает обратный вызов отдельной функции

пример кода для быстрого ознакомления.

   __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
   [request setCompletionBlock:^{
      NSString *responseString = [request responseString];
   }];
   [request startAsynchronous];

Я хотел бы начать использовать Restkit, но мне нужно иметь возможность использовать Restkit и с блоками.

Я видел обертку здесь Restkit Block Wrapper , но хотел бы проверить, будет ли эта оболочка хорошо работать на производстве, и использовал ли кто-нибудь ее широко до

Ответы [ 4 ]

8 голосов
/ 26 июня 2011

Я еще не использовал обертку блока RestKit, но скоро буду. Я на самом деле удаляю ASIHTTPRequest из моего приложения и заменяю его RestKit. Не потому что это плохо, ASIHTTP * достаточно стабилен - но он не развивается. В то время как многие другие библиотеки, такие как RestKit, обертывают NSURLConnection и, таким образом, получают преимущества от непрерывных улучшений Apple, ASIHTTP * использует CFNetwork. Apple не вкладывает много усилий в улучшение уже существующих классов Core Foundation (таких как CFNetwork). Кроме того, поскольку ASIHTTP * зависит от CF, это будет королевская боль , чтобы перейти на ARC, когда он станет доступен; Я не хочу пользоваться преимуществами ARC как можно скорее.

7 голосов
/ 29 августа 2011

Поддержка блоков для всех основных задач делегатов в RKRequest и RKObjectLoader будет в 0.9.4

3 голосов
/ 03 августа 2011

Вчера Блейк выпустил по сравнению с 0.9.3 , который показывает использование блоков для Object Mapper (другие методы уже были готовы для блоков).Вы должны взглянуть на новые функции.

1 голос
/ 08 июля 2012

Для быстрого примера кода для использования RestKit с блоками я извлек этот фрагмент из 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]); 
    };
}];
...