我想知道这是否是iOS框架中的错误。NSURLCache setMemoryCapacity: 方法被调用为 0 并使其停止缓存。
我在展示 UIWebView 时看到了这种情况。我正在使用 SDURLCache 并覆盖 setMemoryCapacity: 如果传入的 memoryCapacity 为零,则在此处放置一个断点,以便我可以看到谁在清除它:
(gdb) bt
#0 -[SDURLCache setMemoryCapacity:] (self=0x18fc80, _cmd=0x347fee55, memoryCapacity=0) at /Users/me/Documents/Work/Clients/Joe/iphone-TESTapp/SDURLCache/SDURLCache.m:447
#1 0x33ddac3e in +[WebView(WebFileInternal) _setCacheModel:] ()
#2 0x33dda388 in +[WebView(WebFileInternal) _preferencesChangedNotification:] ()
#3 0x30ec27a4 in __invoking___ ()
#4 0x30e3a43c in -[NSInvocation invoke] ()
#5 0x36493c3c in SendMessage ()
#6 0x36493c14 in HandleAPISource ()
#7 0x30e96a78 in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ()
#8 0x30e986a2 in __CFRunLoopDoSources0 ()
#9 0x30e994ea in __CFRunLoopRun ()
#10 0x30e29ec2 in CFRunLoopRunSpecific ()
#11 0x30e29dca in CFRunLoopRunInMode ()
#12 0x36492284 in RunWebThread ()
#13 0x35ba5310 in _pthread_start ()
#14 0x35ba6bbc in thread_start ()
发布某种偏好更改?我在 WebPreferences.h 中看到 cacheModel 的东西,它只是 Mac OS X SDK :-(
所以,理想情况下,我们有办法设置缓存策略,但我不知道该怎么做。我不明白为什么它会选择一个没有缓存的缓存模型。
任何人都知道如何将 iOS 应用程序的缓存模型设置为更像 WebCacheModelPrimaryWebBrowser 的东西?
这类似于NSURLCache 内存大小为零,但我希望通过提供更多详细信息,我可能会得到答案......