【发布时间】:2017-09-28 13:32:15
【问题描述】:
最近,我收到了很多来自使用 iOS 8.x 的客户的崩溃日志。这里是日志,
Application received signal SIGSEGV
current state:Foreground,total time:0H0M34S,active time:0H0M29S
iOS Version:8.1.1 (12B435)
(null)
((
0 CoreFoundation 0x219b060f exceptionPreprocess (in CoreFoundation) + 151
1 libobjc.A.dylib 0x35b53c77 objc_exception_throw + 38
2 CoreFoundation 0x219b053d -[NSException initWithCoder:] (in CoreFoundation) + 1
3 my app 0x47f61b UmengSignalHandler (in my app) + 137
4 libsystem_platform.dylib 0x3622f09b _sigtramp + 34
5 CoreFoundation 0x21968f15 CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ (in CoreFoundation) + 13
6 CoreFoundation 0x281f4e4d _CFXNotificationPost + 1800
7 Foundation 0x225f8ec1 -[NSNotificationCenter postNotificationName:object:userInfo:] (in Foundation) + 77
8 Foundation 0x225fda3f -[NSNotificationCenter postNotificationName:object:] (in Foundation) + 31
9 UIKit 0x250bf913 -[UIApplication _performMemoryWarning] (in UIKit) + 139
10 libdispatch.dylib 0x2f78340f _dispatch_client_callout (in libdispatch.dylib) + 23
11 libdispatch.dylib 0x2f798709 _dispatch_source_latch_and_call (in libdispatch.dylib) + 621
12 libdispatch.dylib 0x2f791f3d _dispatch_source_invoke$VARIANT$mp (in libdispatch.dylib) + 213
13 libdispatch.dylib 0x2f78e035 _dispatch_main_queue_callback_4CF$VARIANT$mp (in libdispatch.dylib) + 329
14 CoreFoundation 0x21976631 CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE (in CoreFoundation) + 9
15 CoreFoundation 0x21974d51 __CFRunLoopRun (in CoreFoundation) + 1513
16 CoreFoundation 0x281f2b31 CFRunLoopRunSpecific + 476
17 CoreFoundation 0x281f2943 CFRunLoopRunInMode + 106
18 GraphicsServices 0x2f5d2051 GSEventRunModal + 136
19 UIKit 0x2b7e86f1 UIApplicationMain + 1440
20 my app 0x28b8cd main (in eif-ios-app) (main.m:27)
21 libdyld.dylib 0x2f7beaaf start (in libdyld.dylib) + 3
)
从日志中,我们可以发现应用程序在收到内存不足警告时崩溃了。我的项目代码从未运行,所以我猜僵尸对象发生了。 因为僵尸与 UIApplicationDidReceiveMemoryWarningNotification 相关联,所以我搜索了每个观察通知的地方。 结果,在 dealloc 中删除了所有观察者,除了属于单例的观察者。 现在我不知道如何解决这个崩溃。感谢您的帮助。
【问题讨论】:
-
再次接收崩溃日志,但这一次我发现App在UINibStorage类的选择器setArchiveData处停止运行。 UINibStorage,它是私有类,UINibStorage 对象由UINib 创建和保存。我发现 UINib 是在 UIApplicationDidReceiveMemoryWarningNotification 上签名的,在收到通知时它会执行 [self.nibStorage setArchiveData],然后崩溃。现在找到崩溃的位置,但如何修复?感谢您的帮助。
标签: ios objective-c