douban-objc-client Objective C 实现的 豆瓣 API 客户端开源项目

我要开发同款
匿名用户2012年02月28日
35阅读
所属分类Objective-C、Web应用开发、网站API
授权协议BSD

作品详情

douban-objc-client是一个ObjectiveC实现的豆瓣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消息,再releaserequest。

另外一个更为优雅的方法是使用“闭包”(block),DOUHttpRequest提供了一个方法,可以用闭包来处理回调。由于request会自动retain闭包。所以,这就避免了使用delegate处理回调时可能出现的上述问题。

但,Objective-C的闭包在iOS4.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");}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论