Objective c AFHTTPRequestOperation块用户界面
我有以下代码从php脚本中获取一些数据。我发现它阻塞了接口,因此进度指示器不会旋转。 是否有一种简单的方法将其发送到后台,以便UI可以自由地执行任何需要的操作?我的印象是使用块可以实现这一点,但我显然错了(一步一步地学习Obj-C!) 谢谢Objective c AFHTTPRequestOperation块用户界面,objective-c,ios,afnetworking,Objective C,Ios,Afnetworking,我有以下代码从php脚本中获取一些数据。我发现它阻塞了接口,因此进度指示器不会旋转。 是否有一种简单的方法将其发送到后台,以便UI可以自由地执行任何需要的操作?我的印象是使用块可以实现这一点,但我显然错了(一步一步地学习Obj-C!) 谢谢 NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: self.user.username, @"username",
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
}];
这段代码应该可以工作,请求在后台加载。问题一定在别的地方。
我不知道主线程的时间花在哪里,可能是在
enbleLoadingState:
?启动请求的方法应立即返回。通过在方法的开始和结束处以及成功块内部插入NSLog来测试这一点。成功块中的NSLog应该最后打印出来。此代码应该有效,请求在后台加载。问题一定在别处。最好将AFHTTPClient子类化并使其成为单例class@phix23但它不起作用:(在我的php脚本中,我做了一个睡眠(5)它会等待5秒,而进度指示器就在那里,我无法点击UI上的任何其他按钮。我使用的是迄今为止最新的Xcode和iOS SDK。这在模拟器以及iPad第一代上都会发生。我使用的是ARC…我想不出任何其他东西可以对此有所帮助。我将尝试对客户端进行子类化正如你所说(我想我在某处看到了一个这样的例子)。@phix23我刚刚把AFHTTPClient做成了一个单体(iOS示例应用程序有一个我可以使用的,只需稍加调整),问题仍然存在,只是现在代码更干净了:)有什么想法吗?我仍然不知道在主线程上花了多少时间,可能是在enbleLoadingState:
?启动请求的方法应立即返回。通过在方法的开始和结束处以及成功块内部插入NSLog来测试这一点。成功块中的NSLog最后应该打印出来。