延迟加载使得iPhone应用程序在第一次使用时响应速度变慢,我可以预取图像吗?

延迟加载使得iPhone应用程序在第一次使用时响应速度变慢,我可以预取图像吗?,iphone,uikit,Iphone,Uikit,由于iPhone中视图控制器的延迟加载特性,当您第一次进入各种屏幕时,我的应用程序的响应有点慢,其中包含丰富的图形元素(自定义图形资源)。将提前预加载应用程序映像,即提前调用[UIImage ImageName:…],以便下次调用时使用缓存版本 这样行吗?在涉及富UI的情况下(即使用了大量自定义图形资源),任何其他可以加快视图控制器加载速度的提示?发送+[UIImage imageNamed:][/code>会缓存您尝试加载的图像,因此提前发送此消息应该会加快后续图像抓取(假设它们在缓存中)根据

由于iPhone中视图控制器的延迟加载特性,当您第一次进入各种屏幕时,我的应用程序的响应有点慢,其中包含丰富的图形元素(自定义图形资源)。将提前预加载应用程序映像,即提前调用[UIImage ImageName:…],以便下次调用时使用缓存版本


这样行吗?在涉及富UI的情况下(即使用了大量自定义图形资源),任何其他可以加快视图控制器加载速度的提示?

发送
+[UIImage imageNamed:][/code>会缓存您尝试加载的图像,因此提前发送此消息应该会加快后续图像抓取(假设它们在缓存中)根据文件<代码>图像命名:
文档是。

您也可以提前加载视图控制器,然后调用[viewController view]强制加载视图

我认为不能保证从另一个线程调用图像或nib加载是安全的。如果他们已经使映像缓存线程安全(NSMutableDictionary是线程安全的IIRC),那么映像加载可能是安全的,nib加载则不那么安全,因为init/viewDidLoad/etc可能希望在主线程中运行

如果在主线程中进行预加载,那么它将阻塞UI。您可以通过使用performSelector:withObject:afterDelay:和一个小延迟(0.01?0.1?)来缓解此问题;请注意,没有任何保证。在OS 4上,您可以在[NSOperationQueue mainQueue]上的操作中加载每个映像;将操作优先级设置为较小的值(0或0.1?)应确保UI获得优先级

还要注意的是,如果您使用了太多内存,以至于收到内存警告,那么任何预加载都是毫无意义的