0

我刚刚在 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.1 上的 iPad 2 和 iOS 5.1 上的 iPhone 3GS 上进行了测试。 1)。有什么想法吗?

4

1 回答 1

1

我认为您的应用程序中调用的第一个方法是 applicationDidFinishLaunchingWithOptions: 在您的应用程序委托中,而不是 viewDidLoad。

有时会发生,您的视图被卸载(例如,由于内存不足),然后再次加载。这次配置器可能会被加载两次,这很糟糕。

因此,解决方案可能是将 ShareKit 配置移动到 applicationDidFinishLaunchingWithOptions,如配置 wiki中所述。此方法保证只被调用一次。

于 2012-06-19T19:36:32.127 回答