我只是在iTunes Connect中显示崩溃报告,所以我已将其加载到Xcode中,这对我来说是象征性的。
相关部分是:
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x00000000, 0x00000000
Crashed Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x323e188f __exceptionPreprocess + 163
1 libobjc.A.dylib 0x34437259 objc_exception_throw + 33
2 CoreFoundation 0x323e1789 +[NSException raise:format:] + 1
3 CoreFoundation 0x323e17ab +[NSException raise:format:] + 35
4 Bitrate Tester 0x00048435 0x0001a435
5 Bitrate Tester 0x00031473 -[FirstViewController viewDidLoad] (FirstViewController.m:27)
FirstViewController,毫不奇怪,是我的应用程序显示的第一个视图控制器,这意味着[FirstViewController viewDidLoad]
基本上是我的应用程序中调用的第一个实际方法。因此,以前称之为错误的可能性不大。
现在,这就是viewDidLoad
的样子:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
DefaultSHKConfigurator *configurator = [[MySHKConfigurator alloc] init];
[SHKConfiguration sharedInstanceWithConfigurator:configurator];
[SHK setFavorites:[NSArray arrayWithObjects:@"SHKFacebook",@"SHKTwitter",@"SHKMail",nil] forType:SHKShareTypeText];
}
第27行
[SHKConfiguration sharedInstanceWithConfigurator:configurator];
那么,ShareKit会导致我的应用程序崩溃吗?请注意,我无法在我的任何设备上重现该问题(我在iOS模拟器中测试过,在iOS 5.1.1上测试了我的iPhone 4,在iOS 5.1上测试了iPad 2,在iOS 5.1上测试了iPhone 3GS)。 1)。有什么想法吗?
答案 0 :(得分:1)
我认为在您的应用中调用的第一个方法是applicationDidFinishLaunchingWithOptions:在您的app委托中,而不是viewDidLoad。
有时会发生您的视图被卸载(例如因为内存不足),然后再次加载。这次配置器可能会加载两次,这很糟糕。
因此解决方案可能是将ShareKit配置移至applicationDidFinishLaunchingWithOptions,如configuration wiki中所述。保证只能调用此方法一次。