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, как указано в вики конфигурации. Этот метод гарантированно вызывается только один раз.