我的公司使用UIWebView
来展示广告。我遇到的问题是初始化UIWebView
似乎很昂贵;使用Time Profiler进行分析显示[UIWebView alloc] initWithFrame:CGRectMake(0,0,500,500)]
需要31-40毫秒。这足以在以60 FPS运行的游戏中引起明显的帧丢失。
有没有办法解决这个缓慢的初始化时间?我当前的想法是在应用程序启动时(但在游戏开始之前)创建UIWebView
,并重用它(可能创建它们的池以便重用,如UITableViewCell
如何工作)或尝试和看看WKWebView
是否有更好的表现。
答案 0 :(得分:4)
以下是我的发现:
WKWebView
没有更快地初始化。创建WKWebView
花费了与创建UIWebView
相同的时间(在我做的1次测试中,创建两个WKWebView
需要46ms。UIWebView
s池是一个很好的解决方案。通过在应用启动时创建webview,然后重新使用它们,我可以避免在游戏运行时导致帧丢失。答案 1 :(得分:0)
UIWebView
和WKWebView
之间的响应能力没有太大差异,因为为了iOS和OSX之间的一致性问题引入了WKWebView
。底层引擎是Webkit的任何一种方式,它需要大量的初始化。
我最近发现的最佳解决方案是从{0.1}开始逐渐消失,其中0.1 alpha的视图加载了网址。小心不要从0.0开始,并且没有从主视图层次结构中分离webview,因为你的url不会被加载。
当调用WebView
时,您可以将其淡入1.0,从而提供更好的用户体验。
我个人不喜欢didFinishLoading
池,因为我在维护它时遇到了一些内存问题,特别是在iOS 7设备上。