几天前,我发现了performSelectorInBackground:,我立刻就知道我的应用程序中有一个地方可以完美地使用它。
- (void)activate {
waitForStartCode.text = @"Loading...";
userNotifications.text = @"";
timeRemaining.text = @"";
[loadingNTP startAnimating];
[self performSelectorInBackground:@selector(initializeEverything) withObject:nil];
}当我的视图可见时,调用此函数。以前,当使用CocoaAsyncSocket连接到NTP时间服务器时,我的应用程序冻结,直到这个过程完成。我真的想要一个具有动画UIActivityIndicatorView的加载视图。
除了使用CocoaAsyncSocket进行NTP初始化之外,initializeEverything中的所有内容都工作得很好。
[NetworkClock sharedNetworkClock];我得到了一个:



即使用我不熟练的眼睛,我也能断定CocoaAsyncSocket不应该在后台运行。
有什么办法可以解决这个问题吗?
发布于 2013-02-17 00:45:38
CocoaAsyncSocket支持异步联网。因此,原则上您不需要自己创建后台线程来防止UI冻结: CocoaAsyncSocket将在后台为您处理通信。
我不能说你是否以一种“阻塞”的方式使用框架,或者你正在做的任何其他事情都会使你的UI阻塞。但是,正如我所说的,原则上您不需要自己管理后台线程。
https://stackoverflow.com/questions/14912491
复制相似问题