0

我有一个使用 ASIHTTPRequest 库启动 HTTP 请求的方法 (getAllTeams:)。

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 不返回任何内容,因为 HTTP 响应是在 requestFinished: 方法中评估的。

理想情况下,我希望能够调用[WebService getAllTeams],等待响应,然后将其转储到 NSArray 中。我不想创建属性,因为这是一次性类(意味着它不存储任何值,只是检索值),并且多个方法将使用相同的 requestFinished (它们都返回一个数组)。

我已经阅读了一些关于代表和 NSNotifications 的内容,但我不确定它们中的任何一个是否是最好的方法。我找到了这个关于通过将选择器作为参数传递来实现回调的片段,但它没有成功(因为 requestFinished 独立触发)。

有什么建议么?即使只是指出正确的方向,我也会很感激。

NSArray *teams = [[WebService alloc] getAllTeams];(目前不起作用,因为 getAllTeams 不返回任何内容,但 requestFinished 会。我想获取 requestFinished 的结果并将其传递回 getAllTeams :)

4

1 回答 1

0

与调用一起发送对原始类实例的引用:

[WebService getAllTeams:self];

然后修改-getAllTeams以接受对原始实例的引用:

- (void) getAllTeams:(id)sender {
    // ...
    [request setDelegate:sender];
    // ...
}

您的原始实例将负责处理响应和清理内存。

于 2010-05-20T23:58:49.240 回答