ShareKit вызывает сбой в моем приложении iOS?

У меня только отчет о сбое в 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 Simulator, моем iPhone 4 на iOS 5.1.1, iPad 2 на iOS 5.1.1 и iPhone 3GS на iOS 5.1.1). Какие-нибудь мысли?

1 ответ

Я думаю, что первым методом, вызываемым в вашем приложении, является applicationDidFinishLaunchingWithOptions: в делегате приложения, а не viewDidLoad.

Иногда может случиться, что ваше представление будет выгружено (например, из-за нехватки памяти), а затем загружено снова. На этот раз конфигуратор может быть загружен дважды, что плохо.

Поэтому решение может состоять в том, чтобы переместить конфигурацию ShareKit в applicationDidFinishLaunchingWithOptions, как указано в вики конфигурации. Этот метод гарантированно вызывается только один раз.

Другие вопросы по тегам