Использование блоков в Restkit (например, блоков ASIHTTPRequest)

#iphone #ios #ios4 #restkit

#iPhone #iOS #ios4 #restkit

Вопрос:

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

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

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

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

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

Комментарии:

1. Мин, ASIHTTPREQUEST — невероятно продвинутая и высокоразвитая библиотека. Действительно, это поразительно — другого слова не подобрать. Вероятно, справедливо будет сказать, что это, безусловно, самая надежная сторонняя библиотека любого типа во вселенной iOS. Я думаю, очень короткий ответ на ваш вопрос: «нет, ничто другое не будет таким надежным». Надеюсь, это поможет!

Ответ №1:

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

Комментарии:

1. на самом деле я просто создаю дополнительный класс-оболочку поверх всего моего objectmapper, и это работает хорошо. я желаю, чтобы restkit поддерживал блоки к моменту выхода версии v1!

2. Бен, который создал ASIHTTPRequest, на самом деле только что объявил в своем блоге, что он официально прекращает разработку ASIHTTPRequest, также по причине, упомянутой выше: allseeing-i.com /[request_release] ;

Ответ №2:

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

Ответ №3:

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

Ответ №4:

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