0

我有以下代码从 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
}];
4

1 回答 1

0

此代码应该可以工作,请求在后台加载。问题一定出在其他地方。我不知道时间花在主线程上,也许在enbleLoadingState:?启动请求的方法应该立即返回。通过在方法的开头和结尾以及成功块内插入 NSLog 来测试这一点。成功块中的 NSLog 应该最后打印出来。

于 2012-04-19T15:43:59.510 回答