- 授权协议: BSD
- 开发语言: Objective-C
- 操作系统: iOS
- 软件首页: https://github.com/douban/douban-objc-client
- 软件文档: https://github.com/douban/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");
}
神一样的产品经理
闫荣 / 电子工业出版社 / 2012-6-1 / 79.00元
这是一本系统阐述移动与互联网产品从无到有、从有到优的产品经理实践案例著作。《神一样的产品经理:基于移动与互联网产品实践》贯穿着“人如产品,产品如人”、“产品的根基和源泉来自现实生活”的写作理念,表达了产品的成功需要神一样的产品经理管理的观点。 《神一样的产品经理:基于移动与互联网产品实践》由浅入深、循序渐进地阐述了产品经理、产品需求、用户体验、项目管理、产品运营和产品团队管理的内容,理论与实......一起来看看 《神一样的产品经理》 这本书的介绍吧!
