2013-05-01 2 views
6

私は通常、クラッシュレポートを理解するためにSOに助けを求めることはしませんが、(a)ここではエキスパートからクラッシュレポートを読むことについて多くを学ぶことができます。(b)私は望む通りに航行の流れについてはあまり理解していません(この部分は、私が思うところではクラッシュレポートに特有のものです)。iOS - loadViewIfRequiredでクラッシュする

誰かが同じ問題を抱えていると私のアプリがクラッシュする理由を理解するのを助けてくれることを願っています。

これはときどきクラッシュすることがありますが、これは断続的な理由で私を超えています。しかし、クラッシュすると、同じスタックトレース(同じ)でクラッシュします(下記参照)。

今私はcmdPressed(このメソッドにはたくさんのコードがあります)でクラッシュしていますが、それより深い何かを理解するのは難しいです。

以下のクラッシュレポートを読んで、誰かが私のアプリがクラッシュする理由についてアドバイスをしていますか?なぜそれは矛盾しているかもしれませんか?

Thread 0 Crashed: 
0 libobjc.A.dylib      0x344dd5aa _objc_msgSend + 10 
1 UIKit        0x3374458d -[UIViewController loadViewIfRequired] + 365 
2 UIKit        0x33799133 -[UIViewController contentScrollView] + 27 
3 UIKit        0x33799079 -[UINavigationController _computeAndApplyScrollContentInsetDeltaForViewController:] + 29 
4 UIKit        0x33798f5d -[UINavigationController _layoutViewController:] + 33 
5 UIKit        0x33798e81 -[UINavigationController _updateScrollViewFromViewController:toViewController:] + 273 
6 UIKit        0x337985c1 -[UINavigationController _startTransition:fromViewController:toViewController:] + 65 
7 UIKit        0x337984a9 -[UINavigationController _startDeferredTransitionIfNeeded:] + 325 
8 UIKit        0x337e54b1 -[UINavigationController defaultFirstResponder] + 129 
9 UIKit        0x33797849 -[UIResponder(Internal) _deepestDefaultFirstResponder] + 25 
10 UIKit        0x337976fb -[UIResponder(Internal) _promoteDeepestDefaultFirstResponder] + 31 
11 UIKit        0x33813349 -[UIWindowController transitionViewDidStart:] + 81 
12 UIKit        0x337bf8db -[UITransitionView transition:fromView:toView:removeFromView:] + 991 
13 UIKit        0x33a00059 __91-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:]_block_invoke_0236 + 389 
14 UIKit        0x33812961 -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 4761 
15 UIKit        0x33810fc7 -[UIViewController presentViewController:withTransition:completion:] + 3395 
16 UIKit        0x33933257 -[UIViewController presentModalViewController:animated:] + 31 
17 MyApp        0x00044973 -[AppViewController cmdPressed] (AppViewController.mm:553) 
18 UIKit        0x338100a5 -[UIApplication sendAction:to:from:forEvent:] + 73 
19 UIKit        0x33810057 -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 31 
20 UIKit        0x33810035 -[UIControl sendAction:to:forEvent:] + 45 
21 UIKit        0x3380f8eb -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503 
22 UIKit        0x3380fde1 -[UIControl touchesEnded:withEvent:] + 489 
23 UIKit        0x337385f1 -[UIWindow _sendTouchesForEvent:] + 525 
24 UIKit        0x33725801 -[UIApplication sendEvent:] + 381 
25 UIKit        0x3372511b _UIApplicationHandleEvent + 6155 
26 GraphicsServices     0x389085a3 _PurpleEventCallback + 591 
27 GraphicsServices     0x389081d3 PurpleEventCallback + 35 
28 CoreFoundation      0x3a5c8173 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 35 
29 CoreFoundation      0x3a5c8117 __CFRunLoopDoSource1 + 139 
30 CoreFoundation      0x3a5c6f99 __CFRunLoopRun + 1385 
31 CoreFoundation      0x3a539ebd _CFRunLoopRunSpecific + 357 
32 CoreFoundation      0x3a539d49 _CFRunLoopRunInMode + 105 
33 GraphicsServices     0x389072eb _GSEventRunModal + 75 
34 UIKit        0x337792f9 _UIApplicationMain + 1121 
35 MyApp        0x0003d083 main (main.m:44) 

アドバイスをいただければ幸いです。ありがとう!!!

+0

objc_msgSendのクラッシュは、多くの場合、メモリ管理の問題が原因です。 using the Zombies instrumentの間にクラッシュを再現し、それがあなたに詳細情報を与えるかどうか試してみてください。 –

+0

これはpresentModalViewControllerでクラッシュしているので、おそらくそれはいくつか悪いことを送っているでしょう。表示されているエラーメッセージを表示することは不可能です。 –

+0

「AppViewController」のコードを投稿してください – Nick

答えて

-3

このメソッドを追加してください。これがあなたを助けることを願っています。

-(void)setView:(UIView*)view 
{ 
    if(view != nil) 
[super setView:view]; 
    else 

     NSLog(@"Memory"); 
} 
0

これは遅れていると私はあなたの問題を解決するかどうかもわかりません。しかし、私がこの問題に直面したとき(loadViewIfRequiredに関連して)、私の場合も時々だけクラッシュしていたので、苦労しました。私は[UITableViewController tableView]を、tableviewをロードする前に呼び出されていた私のtableviewコントローラクラスの外から呼び出していました。私のtableViewが適切にロードされていないので、私のUITableViewControllerクラスはloadViewIfRequired APIを呼び出して、他のスレッド(メインスレッドではない)でViewDidLoadを呼び出していました。 私のtableviewcontrollerがロードされる前に[UITableViewController tableView]これを呼び出さないようにしてこの問題を修正しました。

0

私は同じ問題に直面しました。私にとっては、問題は私がxibファイルを変更したが、以前のすべてのアウトレットを接続するのを忘れたことでした。

関連する問題