我发现了performSelectorInBackground:几天前,我立即知道我的应用程序中哪个位置是完美的。
- (void)activate {
waitForStartCode.text = @"Loading...";
userNotifications.text = @"";
timeRemaining.text = @"";
[loadingNTP startAnimating];
[self performSelectorInBackground:@selector(initializeEverything) withObject:nil];
}
当我的视图可见时调用此方法。之前,当NTP时间服务器连接到使用CocoaAsyncSocket时,我的应用程序冻结,直到此过程完成。我真的想要一个带有动画UIActivityIndicatorView的加载视图。
initializeEverything中的所有内容 - (void)工作正常,使用CocoaAsyncSocket执行NTP初始化。
[NetworkClock sharedNetworkClock];
我得到了:
即使我不熟练的眼睛,我可以告诉CocoaAsyncSocket并不打算在后台运行。
这有什么办法吗?
答案 0 :(得分:1)
CocoaAsyncSocket支持异步网络。所以原则上你不需要自己的后台线程来阻止你的UI冻结:CocoaAsyncSocket将为你处理后台通信。
我不能说你是否以“阻塞”的方式使用框架,或者你正在做任何使你的UI阻塞的事情。但是,正如我所说,原则上你不需要自己管理后台线程。