0

プロジェクトにthree20ライブラリを含めました。TTThumbsViewControllerを利用しています。Xcode3.2.6とiOS4.3にアップグレードするまで、すべてがうまく機能していました。写真のグリッドは正常に表示されますが、親指の1つをクリックするとすぐに、アプリがクラッシュします。これはメモリの問題ではないと確信しています。ただし、シミュレーターでは正常に機能します。クラッシュレポートは次のとおりです。

インシデント識別子:3C63956F-F718-468F-B113-116E457DEB4E
CrashReporterキー:32180af33b999869f98369f8d85412b799a88fdb
ハードウェアモデル:iPhone3,1
プロセス:MyApp [15071]
パス:/ var/mobile/Applications/13C32157-F4CA-44BC-BB8F-D / MyApp
識別子:MyApp
バージョン:??? (???)
コードタイプ:ARM(ネイティブ)
親プロセス:起動[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クラッシュ:
0 libsystem_kernel.dylib 0x00011a1c __pthread_kill + 8
1 libsystem_c.dylib 0x000333b4 pthread_kill + 52
2 libsystem_c.dylib 0x0002bbf8 abort + 72 3libstdc
++。6.dylib0x :: __ verbose_terminate_handler()+ 376
4 libobjc.A.dylib 0x0000606c _objc_terminate + 104 5libstdc
++。6.dylib0x00042e36_ cxxabiv1 :: _terminate(void(*)())+ 46
6libstdc++。6.dylib0x00042e8astd ()+ 10
7libstdc++。6.dylib0x00042f5a__cxa_throw + 78
8 libobjc.A.dylib 0x00004c84 objc_exception_throw + 64
9 CoreFoundation 0x0009e48a + [NSException raise:format:arguments:] + 62
10 CoreFoundation 0x0009e4c4 + [NSException raise:format:] + 28
11 QuartzCore 0x00001616 CALayerSetPosition(CALayer *、CA::V const&、bool)+ 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

誰かアイデアはありますか?

ありがとう

4

3 に答える 3

4

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

@try
{
    [myUIView setFrame:someFrame];
}
@catch(NSException *exception)
{
    NSLog(@"Caught exception: %@", exception);
}

これにより、例外がスローされる理由に関する詳細情報が得られるはずです。ほとんどの場合、無効なパラメータなどを渡しています。

于 2011-05-07T18:15:35.760 に答える
3

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

于 2011-05-10T04:26:42.483 に答える
0

私も最近この例外を見ました。Adamが言ったことによると、問題はNaNがパラメーターとして渡され、これが例外をスローしていることだと思います。それが私が直面していたのと同じ問題である場合、問題を回避するためにラインをコメントアウトすることができました(AFAICTラインはローディングスピナーの進行状況インジケーターのみを処理しています)。それで、あなたがそれなしで生きることをいとわないなら、あなたはそれを回避することができます

于 2011-05-08T17:31:35.307 に答える