Yep*_*Yep 5 multithreading objective-c grand-central-dispatch
我创建了一个应用程序,可以在第一次启动时访问某些数据,然后显示它.我一直在这样下载这些数据:
NSData *data = [NSData dataWithContentsOfURL:url];
Run Code Online (Sandbox Code Playgroud)
这不好吗?现在我已经将包含它的方法设置为使用GCD在后台线程中运行,但我听说由于dataWithContentsOfURL是同步的,所以很糟糕.对此有何意见?
如果你在主UI线程上运行它会很糟糕.这将阻止您的应用程序的响应性,这是不好的,但它在启动时更糟糕.
你需要让它异步.您可以通过在后台线程(GCD dispatch_async)上运行该方法或使用NSUrlConnection的异步方法来实现.
这是一个使用GCD在后台工作,然后在主线程上更新UI(完成后)的示例:
另一种选择是NSUrlConnection的异步方法.请在此处查看initWithRequest方法:
| 归档时间: |
|
| 查看次数: |
2267 次 |
| 最近记录: |