再現できないクラッシュ レポートを収集したアプリがあります。[super didReceiveMemoryWarning]
独自のメモリ警告を処理するときに呼び出すだけのView Controllerがあります(はい、これを行う必要がないことはわかっていますが、現在抱えている問題も解決しません)。親UIViewControllerがpurgeMemoryForReasonを呼び出そうとすると、クラッシュします
関連するトレース情報は次のとおりです。
Exception Type: SIGSEGV
Exception Codes: SEGV_ACCERR at 0x90000008
Crashed Thread: 0
Thread 0 Crashed:
0 libobjc.A.dylib 0x361dbf78 objc_msgSend + 16
1 UIKit 0x31fbf499 -[UIViewController purgeMemoryForReason:] + 65
2 MyApp 0x00016f0d -[AttributesViewController didReceiveMemoryWarning] (AttributesViewController.m:76)
3 Foundation 0x30c5b4ff __57-[NSNotificationCenter addObserver:selector:name:object:]_block_invoke_0 + 19
4 CoreFoundation 0x34d86547 ___CFXNotificationPost_block_invoke_0 + 71
5 CoreFoundation 0x34d12097 _CFXNotificationPost + 1407
6 Foundation 0x30bcf3eb -[NSNotificationCenter postNotificationName:object:userInfo:] + 67
7 Foundation 0x30bd0c1b -[NSNotificationCenter postNotificationName:object:] + 31
8 UIKit 0x31f8a271 -[UIApplication _performMemoryWarning] + 81
9 UIKit 0x31f8a36b -[UIApplication _receivedMemoryNotification] + 175
10 libdispatch.dylib 0x30de42e1 _dispatch_source_invoke + 517
11 libdispatch.dylib 0x30de1b81 _dispatch_queue_invoke$VARIANT$mp + 53
12 libdispatch.dylib 0x30de1ec1 _dispatch_main_queue_callback_4CF$VARIANT$mp + 157
13 CoreFoundation 0x34d8d2ad __CFRunLoopRun + 1269
14 CoreFoundation 0x34d104a5 CFRunLoopRunSpecific + 301
15 CoreFoundation 0x34d1036d CFRunLoopRunInMode + 105
16 GraphicsServices 0x3600c439 GSEventRunModal + 137
17 UIKit 0x31e06e7d UIApplicationMain + 1081
18 MyApp 0x0000243b main (main.m:15)
エラーを再現できればいいのですが、テスト デバイスまたはシミュレータでメモリ警告を何度トリガーしても、これが発生しません。調べてみましたが、潜在的な問題を指摘する情報が見つからなかったので、私が探すことができるものについての助けをいただければ幸いです。ありがとう!
編集:私が述べたように、私は何もしていませんdidReceiveMemoryWarning
:
- (void) didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
はい、私はこれを行う必要がないことを知っています。このコードを削除する予定ですが (なぜまだ残っているのかわかりません)、問題の原因を確実に解決したいと考えています。viewDidUnload
私も実装していませんAttributesViewController
。ARC を使用していることにも言及する必要がありましたが、それがここで重要かどうかはわかりません。
私が受け取ったフィードバックから、カメラを使用するとメモリ警告が発生します(UIImagePickerController
ソースタイプUIImagePickerControllerSourceTypeCamera
)。AttributesViewController
は、表示されているビュー コントローラーの 2 レベル上のビュー コントローラーによってモーダルに表示され、UIImagePickerController
オブジェクトやその他のデータを共有しません。カメラがメモリの警告を頻繁に引き起こすことは知っているのでUIImagePickerController
、メモリを大量に消費しているという事実以外に関連しているかどうかはわかりません.
常にアナライザーを実行するように Xcode を設定していますが、問題は発生していません。また、Zombies および Leaks インストゥルメントでコードを実行しましたが、問題を再現したり、他の問題を見つけることはできませんでした。