2011-05-07 32 views
0

私のプロジェクトにはthree20ライブラリが含まれています。私はTTThumbsViewControllerを利用しています。私がXcode 3.2.6とiOS 4.3にアップグレードするまで、すべてがうまくいっていました。写真のグリッドはうまく表示されますが、親指をクリックするとアプリがクラッシュします。私はこれが記憶上の問題ではないことを確信しています。それはしかし、シミュレータ上で正常に動作します。ここではクラッシュレポート:アプリケーションクラッシュ - EXC_CRASH(SIGABRT) - iOS 4.3 - three20

インシデント識別子:3C63956F-F718-468F-B113-116E457DEB4E
CrashReporterキー:32180af33b999869f98369f8d85412b799a88fdb
ハードウェアモデル:iPhone3,1
プロセス:MyAppの[15071]
パス: /var/mobile/Applications/13C32157-F4CA-44BC-BB8F-D9A9FE9EAE38/MyApp.app/MyApp
識別子:MyApp
バージョン:??? (???)
コードタイプ:ARM(ネイティブ)
親プロセス:launchdの[1]

日付/時刻:2011-05-06 21:48:06.042 -0500
OSバージョン:iPhone OS 4.3(8F190)
レポートのバージョン:104

例外タイプ:EXC_CRASH(SIGABRT)
例外コード:0x00000000の、0x00000000の
はスレッドクラッシュ:0

スレッド0名:ディスパッチキュー:com.apple.mainスレッド
スレッド0がクラッシュ:+ 72
3のlibstdcを中止0x0002bbf8
0 libsystem_kernel.dylib 0x00011a1c __pthread_kill + 8
1 libsystem_c.dylib 0x000333b4 pthread_killの+ 52
2 libsystem_c.dylibを++ .6.dylib 0x00044a64 __gnu_cxx :: __ verbose_terminate_handler()+ 376
4 libobjc.A.dylib 0x0000606cの_objc_terminateが+ 104
5にlibstdC++。6.dylib 0x00042e36 _ cxxabiv1 :: _terminate(無効(*)())+ 46
6 libstdC++ .dylib 0x00042e8a std 。::()+ 10
7のlibstdC++終了6.dylib 0x00042f5a __cxa_throw + 78
8 libobjc.A.dylib 0x00004c84 objc_exception_throw + 64
9 CoreFoundationのを0x0009e48a + [NSExceptionレイズ:フォーマット:引数:] + 62
10 CoreFoundationの0x0009e4c4 + [NSExceptionレイズ:フォーマット:] + 28
11 QuartzCore 0x00001616 CALayerSetPosition(CALayerの*、CA :: VEC2のCONST &、ブール値)+ 134
12 QuartzCore 0x00001584 - [CALayerのsetPosition:] + 32
13 QuartzCore 0x000014d0 - [CALayer setFrame:] + 384
14 UIKit 0x0000544e - [UIView(Geometry)setFrame:] + 182
15 MyApp 0x00078366 - [TTPhotoView layoutSubviews](TTPhotoView。M:221)
16のUIKit 0x000055f4 - [UIViewの(CALayerDelegate) layoutSublayersOfLayer:] + 20
17 CoreFoundationのを0x0000befc - [NSObjectの(NSObjectの)performSelector:withObject:] + 16
18 QuartzCore 0x00002bae - [CALayerのlayoutSublayers] + 114

おかげ

+1

"これはメモリの問題ではないと確信しています。シミュレータでうまく動作しても、メモリに問題がないわけではありません。メモリにストンプすると、未定義ビヘイビアの土地に入ってしまいます。クラッシュとサイレント成功の両方を含む何かが起こります。 –

+0

私は同意する。しかし、私はビルドと分析、nszombieenabledと楽器を実行し、メモリ関連の問題を見つけることができませんでした.. – Nanz

+0

何が例外がスローされているのですか?それはコンソールに記録する必要があり、何が間違っているのかを理解するのに役立ちます。 – smorgan

答えて

3

はい。これは渡されたNaNでした。基本的には、デフォルトでnull値をキャプション変数に代入するコンストラクタ(MockPhotoSourceクラス)を使用すると、この例外がスローされます。だから私は他のコンストラクタを使用し、キャプションパラメータに空白の値を与えた

4

機能CALayerSetPositionはタイプNSExceptionの例外がスローされ、誰もがそれをキャッチされていないので、あなたのアプリケーションが終了しつつあります。 (TTPhotoView.mのライン221にする必要があります)機能-[TTPhotoView layoutSubviews]-[UIView(Geometry) setFrame:]への呼び出しの周りにこのコードを追加してみてください:

@try 
{ 
    [myUIView setFrame:someFrame]; 
} 
@catch(NSException *exception) 
{ 
    NSLog(@"Caught exception: %@", exception); 
} 
あなたに例外がスローされている理由についての詳細な情報を与える必要があり

。おそらく、無効なパラメータなどを渡している可能性があります。

+0

これは、キャッチ内のブレークポイントと共に、本当に役に立ちました、ありがとう! – keisar

0

また、私はこの例外とアダムの言ったことを最近見ましたが、問題はNaNがパラメータとして渡されており、例外がスローされているということです。それが私が直面していたのと同じ問題であれば、問題を回避するためにラインをコメントアウトすることができました(AFAICTはローディングスピナーの進捗インジケーターのみを処理しています)。だからこそ、あなたはそれを乗り越えることができます。