我有一个方法(getAllTeams :),它使用ASIHTTPRequest库启动HTTP请求。
NSURL *httpURL = [[[NSURL alloc] initWithString:@"/api/teams" relativeToURL:webServiceURL] autorelease];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:httpURL] autorelease];
[request setDelegate:self];
[request startAsynchronous];
我希望能够做的是致电[WebService getAllTeams]
并让它在NSArray中返回结果。目前,getAllTeams不返回任何内容,因为在requestFinished:方法中评估了HTTP响应。
理想情况下,我希望能够调用[WebService getAllTeams]
,等待响应,然后将其转储到NSArray中。我不想创建属性,因为这是一次性类(意味着它不存储任何值,只检索值),并且多个方法将使用相同的requestFinished(所有这些都返回一个数组)。
我已经阅读过一些关于代表和NSNotifications的内容,但我不确定它们中的任何一个是否是最好的方法。我发现this snippet关于通过将选择器作为参数传递来实现回调,但它没有成功(因为requestFinished独立触发)。
有什么建议吗?我甚至只是指出正确的方向,我感激不尽。
NSArray *teams = [[WebService alloc] getAllTeams];
(目前无效,因为getAllTeams不会返回任何内容,但是requestFinished会返回。我想获取requestFinished的结果并将其传递回getAllTeams:)
答案 0 :(得分:0)
发送对原始类实例的引用以及调用:
[WebService getAllTeams:self];
然后修改-getAllTeams
以接受对原始实例的引用:
- (void) getAllTeams:(id)sender {
// ...
[request setDelegate:sender];
// ...
}
您的原始实例将负责处理响应和清理内存。