例如,如果从服务器下载图像,我们应该懒惰地加载图像。我想知道其他情况。
答案 0 :(得分:2)
总是这样做不会有害。最近推出的所有设备都受益于多核CPU。 Grand Central dispatch可以很容易地定义一个将在另一个核心上执行的进程,然后在完成时将其同步到UI udpates的主线程。
如果您这样做,您的应用程序将感觉更具响应性,并且也很容易从本地磁盘访问转移到远程访问资源。
示例:强> 的
dispatch_queue_t taskQ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(taskQ, ^
{
//Do some work. . . .
//Now update back on the main thread
dispatch_async(dispatch_get_main_queue(), ^
{
});
});
//release the queue.
答案 1 :(得分:2)
任何时候图像尚未处于活动存储器中且准备好显示。
如果您正在从磁盘或核心数据加载图像,则延迟加载图像并使用占位符图像直到完成后才会受到影响。
尤其是对于UITableView,当您以100x100的速度显示图像时,实际图像为1000x1000。
在BG中调整大小并在完成时显示小图像。
答案 2 :(得分:0)
延迟加载的想法是您只在需要时加载资源。例如,如果您的应用程序包中有大量图像/资源,则可以在应用程序启动时立即加载它们,同时让所有内容同时占用内存。这是一个坏主意,因为它不仅使用了大量的RAM(同样不必要的,因为它不是同时在屏幕上显示),但可能需要很长时间才能加载。
答案 3 :(得分:0)
如果您收到邮件并显示邮件的操作将在主线程上花费大量时间并阻止您的应用,那么您应该在后台线程上执行操作。