我在 iPhone 界面上有一个执行功能的按钮。功能是这样的:
-(IBAction)courses:(id)sender {
[loading startAnimating];
[connection getCourses];
[outlet setText:connection.lastResponseData];
}
我的问题是动画只在[outlet setText:connection.lastResponseData
. 在此之前如何让加载开始动画?
谢谢。
我在 iPhone 界面上有一个执行功能的按钮。功能是这样的:
-(IBAction)courses:(id)sender {
[loading startAnimating];
[connection getCourses];
[outlet setText:connection.lastResponseData];
}
我的问题是动画只在[outlet setText:connection.lastResponseData
. 在此之前如何让加载开始动画?
谢谢。
看起来像是getCourses
阻塞了主线程;您开始的任何动画都将被删除,直到courses:
返回之后。修改您的代码以使用后台线程:
-(IBAction)courses:(id)sender {
[loading startAnimating];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[connection getCourses];
dispatch_async(dispatch_get_main_queue(), ^{
[outlet setText:connection.lastResponseData];
[loading stopAnimating];
});
});
}
这会将您的阻塞网络访问置于系统提供的后台 GCD 队列中,该队列包含后台线程。
似乎您的连接阻塞了也负责 UI 的主线程。尝试在connection
启动但未完成时与 UI 交互,如果它没有响应 - 使连接在另一个线程中运行。
例如,异步NSURLConnection不会阻塞你的 UI。