私がリリースしたアプリを使用しているユーザの端末でクラッシュが発生しました。
ユーザはアップルストアからアプリをダウンロードしています。
クラッシュログをみると、どうやらwebViewの表示でクラッシュしているようです。
webViewでロードしているのはphpファイルです。
このアプリは2ヶ月ほど運用しており、日々1000人ほどが利用していますが、
発生したのはこの2ヶ月で3回です。
発生頻度は高くなく、再現させることができず、有力な情報がない状況です。
このクラッシュについて情報をお持ちの方がいましたら共有いただきたく。
実際のコードとクラッシュログを下記に記載します。
環境:iPad Air (Wi-Fi Only) iOS8.3
webViewを作成しているコードは下記です。
- (void)loadWebView { // UIWebViewのインスタンス化 self.scheduleWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0,0,displayWidth,displayHeight)]; // webページのサイズを自動的に画面にフィット self.scheduleWebView.scalesPageToFit = YES; // バウンスを無効化 self.scheduleWebView.scrollView.bounces = NO; // スケジュール一覧をロード self.scheduleWebView.delegate = self; NSString *path = [NSString stringWithFormat:@"%@://%@/%@/xxxx.php",kAppServerAccessProtocol,kAppServerDomain,kAppAPIWhiteCom]; NSURL *url = [NSURL URLWithString:path]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [self.scheduleWebView loadRequest:request]; [self.view addSubview:self.scheduleWebView]; self.scheduleWebView.delegate = self; }
webViewを破棄しているコードは下記です。
アラートで2番目のボタンが押されて時にwebViewを破棄して次処理に移ります。
-(void)alertView:(UIAlertView*)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { switch (buttonIndex) { case 0: //1番目のボタンが押されたときの処理 break; case 1: //2番目のボタンが押されたときの処理 //webView破棄 self.scheduleWebView.delegate = nil; [self.scheduleWebView stopLoading]; self.scheduleWebView = nil; //次処理へ AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate]; [appDelegate logout]; break; } }
収集したクラッシュログは下記です。
Thread 0 Crashed: 0 libobjc.A.dylib 0x00000001986f7bd0 objc_msgSend + 16 1 UIKit 0x000000018beb2f34 <redacted> + 536 2 UIKit 0x000000018beb2f10 <redacted> + 500 3 UIKit 0x000000018beb2f10 <redacted> + 500 4 UIKit 0x000000018beb2f10 <redacted> + 500 5 UIKit 0x000000018beb2f10 <redacted> + 500 6 UIKit 0x000000018beb2ccc -[UIWebBrowserView _collectAdditionalSubviews] + 420 7 UIKit 0x000000018beb2af4 -[UIWebDocumentView _updateSubviewCaches] + 64 8 UIKit 0x000000018be8cb08 -[UIWebDocumentView webViewDidCommitCompositingLayerChanges:] + 52 9 UIKit 0x000000018be8c7e4 -[UIWebBrowserView webViewDidCommitCompositingLayerChanges:] + 88 10 CoreFoundation 0x000000018723e100 <redacted> + 144 11 CoreFoundation 0x000000018713a2fc <redacted> + 296 12 CoreFoundation 0x000000018713ee30 <redacted> + 68 13 WebKitLegacy 0x0000000196654898 -[_WebSafeForwarder forwardInvocation:] + 172 14 libdispatch.dylib 0x0000000198d35994 <redacted> + 24 15 libdispatch.dylib 0x0000000198d35954 <redacted> + 16 16 libdispatch.dylib 0x0000000198d3a20c _dispatch_main_queue_callback_4CF + 1608 17 CoreFoundation 0x00000001871ef7f8 <redacted> + 12 18 CoreFoundation 0x00000001871ed8a0 <redacted> + 1492 19 CoreFoundation 0x00000001871192d4 CFRunLoopRunSpecific + 396 20 GraphicsServices 0x00000001907df6fc GSEventRunModal + 168 21 UIKit 0x000000018bcdefac UIApplicationMain + 1488 22 MyApp(このプロセスは私のアプリです) 0x0000000100130760 _mh_execute_header + 247648 23 libdyld.dylib 0x0000000198d62a08 <redacted> + 4
※クラッシュログの収集方法ですが、quincykit(http://quincykit.net/)というthird partyを使用して収集しています。具体的には、ユーザの端末でクラッシュが発生すると、そのクラッシュログを端末に保持し、次回アプリ起動時に保存したクラッシュログを私宛にメールするようになっています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/02/16 01:23
2016/02/16 06:07 編集
2016/02/16 06:30 編集
2016/02/17 02:15