在我的iPhone应用程序中,我有一个UIWebView,我从xml文件加载数据,加载后,如果我按下我的iPhone主页按钮,如果我尝试重新打开我的应用程序加载然后如果我点击后退按钮和再次加载webview,然后单击主页按钮尝试重新打开应用程序根本没有启动,它正在崩溃。在我的组织者中,崩溃报告是这样的:
libSystem.B.dylib 0x33c30176 cache_remove_with_block + 18
1 CoreFoundation 0x33ad9e52 __NSCacheApplicationDidEnterBackgroundCallBack + 18
2 CoreFoundation 0x33a779a4 __cfnote_callback + 20
3 CoreFoundation 0x33a4711c __CFXNotificationPost_old + 396
4 CoreFoundation 0x33a46dbc _CFXNotificationPostNotification + 112
5 Foundation 0x3361cd1c -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
6 UIKit 0x320c1752 -[UIApplication _handleApplicationSuspend:eventInfo:] + 494
7 UIKit 0x320667a6 -[UIApplication handleEvent:withNewEvent:] + 1910
8 UIKit 0x32065ec2 -[UIApplication sendEvent:] + 38
9 UIKit 0x32065900 _UIApplicationHandleEvent + 5084
10 GraphicsServices 0x33b0eefc PurpleEventCallback + 660
11 CoreFoundation 0x33a556f8 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 20
12 CoreFoundation 0x33a556bc __CFRunLoopDoSource1 + 160
13 CoreFoundation 0x33a47f76 __CFRunLoopRun + 514
14 CoreFoundation 0x33a47c80 CFRunLoopRunSpecific + 224
15 CoreFoundation 0x33a47b88 CFRunLoopRunInMode + 52
16 GraphicsServices 0x33b0e4a4 GSEventRunModal + 108
17 GraphicsServices 0x33b0e550 GSEventRun + 56
18 UIKit 0x32099322 -[UIApplication _run] + 406
19 UIKit 0x32096e8c UIApplicationMain + 664
如何解决这个问题?这可能是什么原因? 任何帮助都要提前感谢。
答案 0 :(得分:0)
我们遇到了同样的问题(在运行iOS 4.x的设备上只有btw ..) 它的原因是在缓存中使用了可变对象。我们在缓存中放置了一个NSMutableDictionary,然后对其进行操作。然后,当缓存被释放(要解除分配)时,似乎发生了一些事情,后来在暂停时崩溃了应用程序。
希望这也解决了你的问题!
<强>更新强>
我们通过this dev forum entry找到了解决方案。似乎iOS 4.3之前的NSCache
未从通知中心取消注册。
我们通过创建NSCache
的简单子类并实现-dealloc
方法(ARC版本)来解决此问题:
- (void)dealloc;
{
// NSCache had an issue on iOS prior to 4.3 where it didn't unregister from notifications and caused crashes
// see https://devforums.apple.com/message/421845#421845
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
现在使用此类而不是NSCache
,你应该没问题。手指交叉。 :)