Ошибка приложения в UIPopoverPresentationController, но нет явных popovers?

Мое приложение (только для iOS 8) было отклонено из-за сбоя при попытке IAP. Я пробовал почти все заклинания процесса покупки в сборке AdHoc, но не могу воспроизвести сбой. Глядя на журнал сбоев, прикрепленный командой обзора, я вижу очень странную трассировку стека в последнем обратном пути исключения. В результате сбоя используется UIPopoverController, однако мое приложение, хотя и универсальное, явно или неявно отображает всплывающие окна в любом месте. Кто-нибудь знает, что может вызвать активность, которая вызывает этот крах? Что может заставить мое приложение отображать popovers, когда команда обзора смотрит на него только?

Last Exception Backtrace:
0   CoreFoundation                0x186d52084 __exceptionPreprocess + 132
1   libobjc.A.dylib               0x1977a40e4 objc_exception_throw + 60
2   UIKit                         0x18bc0aee0 -[UIPopoverPresentationController presentationTransitionWillBegin] + 2464
3   UIKit                         0x18b7d27d8 __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 1324
4   UIKit                         0x18b7d1310 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 212
5   UIKit                         0x18b557388 _applyBlockToCFArrayCopiedToStack + 356
6   UIKit                         0x18b4c8e4c _afterCACommitHandler + 532
7   CoreFoundation                0x186d0a388 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32
8   CoreFoundation                0x186d07314 __CFRunLoopDoObservers + 360
9   CoreFoundation                0x186d076f4 __CFRunLoopRun + 836
10  CoreFoundation                0x186c35664 CFRunLoopRunSpecific + 396
11  GraphicsServices              0x18fd435a4 GSEventRunModal + 168
12  UIKit                         0x18b53a984 UIApplicationMain + 1488

Ответ 1

Не уверен, что это та же самая причина, что и исходный вопрос, но у меня есть такая же ошибка, и проблема заключалась в использовании UIAlertController с стилем ActionSheet, представляя, что он отлично работает на iPhone, но iPad требует, чтобы источник был установлен - fooobar.com/questions/42728/...

Ответ 2

Сначала вы должны проверить доступный UIPopoverPresentationController или нет.

NSArray *Items = [NSArray arrayWithObjects:emailBody,anImage, nil];

    UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:Items applicationActivities:nil];

    if ([UIPopoverPresentationController class] != nil) {   
        UIPopoverPresentationController *popover = activityController.popoverPresentationController;
        if (popover)
        {
            popover.sourceView = sender;
            //popover.sourceRect = sender.bounds;
            popover.permittedArrowDirections = UIPopoverArrowDirectionAny;
        }
    }


    [self presentViewController:activityController animated:YES completion:NULL];