Objective c 使用ASIHTTPRequest和NSOperationQueue的意外结果

Objective c 使用ASIHTTPRequest和NSOperationQueue的意外结果,objective-c,asihttprequest,Objective C,Asihttprequest,这真让我烦透了。。。所以我制作了一个足够基本的应用程序来查询servlet 在昨晚我做了一些改变之前,它一直工作得很好 使用ASIHTTPRequest的调用是同步工作的,它返回的是我所期望的,但是当我使用NSOperationQueue异步进行相同的调用时,它在requestFinished中返回一个完全不同的响应 有人能确定哪里出了问题吗?这可能很简单,但我已经盯着它看了好几个小时,不知道为什么 websiteViewController.m websiteViewController.h

这真让我烦透了。。。所以我制作了一个足够基本的应用程序来查询servlet

在昨晚我做了一些改变之前,它一直工作得很好

使用ASIHTTPRequest的调用是同步工作的,它返回的是我所期望的,但是当我使用NSOperationQueue异步进行相同的调用时,它在requestFinished中返回一个完全不同的响应

有人能确定哪里出了问题吗?这可能很简单,但我已经盯着它看了好几个小时,不知道为什么

websiteViewController.m websiteViewController.h 正如我所说的,它使用同步调用可以正常工作,但在非同步调用时,我不断得到错误的servlet定义


提前感谢。

在iOS模拟器中运行时,使用charlesproxy嗅探工作和非工作请求,然后尝试找出它们之间的差异;如果你看不到不同的答案,请将它们添加到你的问题中。你发布的任何代码都没有明显的错误。为约瑟夫干杯。我稍后会试一试,让你知道我进展如何。奇怪的是,它突然停止工作,而相同的请求同步工作。可能servlet拒绝了多个请求的泛滥。。但似乎不太可能。然而,这是我现在唯一能想到的情况!:这也有可能与持久连接有关;但如果运气好的话,charlesproxy日志应该会缩小范围
- (IBAction)searchStockOfCatNum: (id) sender
{
NSAutoreleasePool *pool =  [[NSAutoreleasePool alloc] init];

if (![self queue]) {
    [self setQueue:[[[NSOperationQueue alloc] init] autorelease]];
}

for (int i = 0; i < self.ids.count; i++)
{
    currStoreID = [self.ids objectAtIndex: i];
    NSURL *url = <website removed>;
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    request.userInfo = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSString stringWithFormat:@"%d", i], @"idx", nil];

    [request setDelegate:self];
    [request setDidFinishSelector:@selector(requestFinished:)];
    [request setDidFailSelector:@selector(requestFailed:)];
    [[self queue] addOperation:request];
}

[pool release];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{
     NSData *responseData = [request responseData];
     NSString *responseStr = [request responseString];
}
@interface websiteViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) NSMutableArray *names, *ids, *stockLvls;
@property (strong, nonatomic) IBOutlet UITextField *catNum;
@property (strong, nonatomic) IBOutlet UIButton *searchBtn;
@property (strong, nonatomic) NSString *currStoreID;
@property (strong, nonatomic) NSOperationQueue *queue;

- (IBAction)searchStockOfCatNum: (id) sender;