应用程序崩溃 - EXC_CRASH(SIGABRT) - iOS 4.3 - three20

时间:2011-05-07 03:40:45

标签: iphone xcode crash three20 sigabrt

我在我的项目中包含了three20库。我正在使用TTThumbsViewController。一切都运行良好,直到我升级到Xcode 3.2.6和iOS 4.3。照片网格显示正常,但只要我点击一个拇指,应用程序崩溃。我确信这不是内存问题。它在模拟器上工作正常。这是崩溃报告:

  

事件标识符:3C63956F-F718-468F-B113-116E457DEB4E
  CrashReporter密钥:32180af33b999869f98369f8d85412b799a88fdb
  硬件型号:iPhone3,1
  过程:MyApp [15071]
  路径:/var/mobile/Applications/13C32157-F4CA-44BC-BB8F-D9A9FE9EAE38/MyApp.app/MyApp
  标识符:MyApp
  版本:??? (???)
  代码类型:ARM(Native)
  父流程:launchd [1]

     

日期/时间:2011-05-06 21:48:06.042 -0500
  操作系统版本:iPhone OS 4.3(8F190)
  报告版本:104

     

异常类型:EXC_CRASH(SIGABRT)
  异常代码:0x00000000,0x00000000
  崩溃的线程:0

     

线程0名称:调度队列:com.apple.main-thread
  线程0崩溃:
  0 libsystem_kernel.dylib 0x00011a1c __pthread_kill + 8
  1 libsystem_c.dylib 0x000333b4 pthread_kill + 52
  2 libsystem_c.dylib 0x0002bbf8 abort + 72
  3 libstdc ++。6.dylib 0x00044a64 __gnu_cxx :: __ verbose_terminate_handler()+ 376
  4 libobjc.A.dylib 0x0000606c _objc_terminate + 104
  5 libstdc ++。6.dylib 0x00042e36 _ cxxabiv1 :: _terminate(void(*)())+ 46
  6 libstdc ++。6.dylib 0x00042e8a std :: terminate()+ 10
  7 libstdc ++。6.dylib 0x00042f5a __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 :: Vec2 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

任何想法?

由于

3 个答案:

答案 0 :(得分:4)

函数CALayerSetPosition抛出类型为NSException的异常,没有人捕获它,因此您的应用程序将被终止。尝试在函数-[UIView(Geometry) setFrame:](应该位于TTPhotoView.m的第221行)的-[TTPhotoView layoutSubviews]调用周围添加此代码:

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

这应该会为您提供有关抛出异常的原因的更多信息;最有可能的是,你传递的是无效参数。

答案 1 :(得分:3)

是的......这是一个正在通过的NaN。基本上,如果您使用构造函数(MockPhotoSource类),默认情况下为caption变量赋予null值,它会抛出此异常。所以我使用了另一个构造函数,并给标题参数

一个空白值

答案 2 :(得分:0)

我最近也看到了这个异常,根据Adam的说法,我认为问题在于NaN作为参数传入,这就是抛出异常。如果这是我面临的同样问题,我能够对该线路进行评论以解决问题(AFAICT该线路仅处理加载微调器进度指示器)。因此,如果你愿意不接受那种生活,你可以绕过它