2017-09-28 20 views
1

を受け取ったときにiOSアプリがクラッシュするのはなぜですか、iOS 8.xを使用しているお客様からのクラッシュログがたくさんあります。ここではログ、最近UIApplicationDidReceiveMemoryWarningNotification

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で削除されましたが、シングルトンに属するオブザーバは例外です。 今このクラッシュを修正する方法がわかりません。助けてくれてありがとう。

+0

再びクラッシュログを受けたが、私はアプリケーションがクラスUINibStorageにセレクタsetArchiveDataで実行を停止することを見つける、この時間。 UINibStorage、それはプライベートクラスであり、UINibStorageオブジェクトはUINibによって作成され、保持されます。 私はUINibがUIApplicationDidReceiveMemoryWarningNotificationで署名されていることを知り、通知を受けている間[self.nibStorage setArchiveData]を実行してクラッシュします。 クラッシュする場所を見つけましたが、修正する方法はありますか?助けてくれてありがとう。 –

答えて

0

問題をデバッグする方法は複数あります。

  1. デバッグ中に、Xcodeのデバッグナビゲータでメモリをチェックできます。新しい画面を押すとメモリが増え、画面をポップするとメモリが少なくなります。 ifが減少しない場合、これはおそらくメモリリークのケースであり、クラッシュを防ぐためにメモリリークを解決する必要があります。 enter image description here

  2. XCodeには、デバッグ中にメモリグラフを生成する方法があります。これを使用して、メモリリークが発生しているインスタンスを見つけることができます。

enter image description here

+0

@Punnetご助言ありがとうございます。 Xcodeメモリグラフデバッガと計測器でメモリをチェックしました。残念ながら、私はリークを発見していません。 メモリリークに関する問題ではないことは間違いありません。コントローラが解放されていない場合、リークされたオブジェクトはメモリ不足の通知を受け取ることがあるため、私のアプリケーションはクラッシュしません。 –