#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]);
};
}];