我有以下代码,可以从php脚本中获取一些数据。我发现它阻塞了界面,所以进度指示器不会旋转。有没有一种简单的方法可以把它发送到后台,这样UI就可以自由地做它需要的任何事情?我的印象是使用块就可以做到这一点,但我显然错了(一步一步地学习Obj-C!)
谢谢!
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
self.user.username, @"username",
self.user.password, @"password",
nil];
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:
[NSURL URLWithString:@"http://domain.com"]];
// Show animated progress indicator, etc
[self enbleLoadingState:YES];
[client postPath:@"/en/api/login" parameters:params success:^(AFHTTPRequestOperation *operation, id response) {
[self enbleLoadingState:NO];
// Do stuff
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
[self enbleLoadingState:NO];
// Show error
}];发布于 2012-04-19 23:44:00
这段代码应该可以工作,请求在后台加载。问题一定出在别的地方。我不知道主线程上的时间花在哪里了,也许是在enbleLoadingState:上?启动请求的方法应该立即返回。通过在方法的开头和结尾以及success块内部插入NSLog来测试这一点。success块中的NSLog应该最后打印出来。
https://stackoverflow.com/questions/10215185
复制相似问题