douban-objc-client 介绍
douban-objc-client 是一个 Objective C 实现的 豆瓣 API 客户端。现在仅支持 iOS。
1.提供 OAuth2 所需参数
DOUService *service = [DOUService sharedInstance]; service.clientId = kAPIKey; service.clientSecret = kPrivateKey;
2.发起一个异步请求
Nsstring *subPath = [Nsstring stringWithFormat:@/book/subject/%d, bookId]; DOUQuery *query = [[[DOUQuery alloc] initWithSubPath:subPath parameters:nil] autorelease]; query.apiBaseUrlString = service.apiBaseUrlString; DOUHttpRequest *req = [DOUHttpRequest requestWithQuery:query target:self]; DOUService *service = [DOUService sharedInstance]; [service addRequest:req];
若使用 delegate 方式处理回调,要注意一个问题,某些情况下,request 的 delegate 被 dealloc 后,request
才得到了返回。这时就是一个 已释放的 delegate 来处理回调。 这会造成程序崩溃。处理方法为,在 request 的 delegate (例如某个
UIViewController) 的 dealloc 方法中对 request 发送 clearDelegatesAndCancel 消息,再
release request。
另外一个更为优雅的方法是使用“闭包” (block),DOUHttpRequest 提供了一个方法,可以用闭包来处理回调。由于 request 会自动
retain 闭包。所以,这就避免了使用 delegate 处理回调时可能出现的上述问题。
但, Objective-C 的闭包在 iOS 4.0 及其以上版本才得到支持。
DOUHttpRequest 的闭包处理回调的方法:
+ (DOUHttpRequest *)requestWithQuery:(DOUQuery *)query completionBlock:(DOUBasicBlock)completionHandler;
3.异步请求的回调
- (void)requestFinished:(DOUHttpRequest *)req { NSError *error = [req error]; if (!error) { DoubanFeedEvent *Feed = [[DoubanFeedEvent alloc] initWithData:[req responseData]]; } } - (void)requestFailed:(DOUHttpRequest *)req { NSLog(@error); }
douban-objc-client 官网
https://github.com/douban/douban-objc-client
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。