Los loggings de locking indicaron que la aplicación falla en el método UIPopoverPresentationController no presente en mi aplicación

Estoy recibiendo loggings de [UIPopoverPresentationController presentationTransitionWillBegin] que dicen que mi aplicación se está estrellando en [UIPopoverPresentationController presentationTransitionWillBegin] , pero en ningún lugar de mi código utilizo un UIPopoverPresentationController. He estado en iPads, uso un UIDocumentInteractionController que parece similar, tal vez es una subclass de UIPopoverPresentationController, no lo sé. ¿Alguna idea de qué podría estar causando esto?

 Exception Type: EXC_CRASH (SIGABRT) Exception Codes: 0x0000000000000000, 0x0000000000000000 Exception Note: EXC_CORPSE_NOTIFY Triggenetworking by Thread: 0 Last Exception Backtrace: 0 CoreFoundation 0x184799900 __exceptionPreprocess + 124 (NSException.m:162) 1 libobjc.A.dylib 0x183e07f80 objc_exception_throw + 56 (objc-exception.mm:531) 2 UIKit 0x189db43a0 -[UIPopoverPresentationController presentationTransitionWillBegin] + 2884 (UIPopoverPresentationController.m:1197) 3 UIKit 0x1897e82fc __71-[UIPresentationController _initViewHierarchyForPresentationSuperview:]_block_invoke + 1640 (UIPresentationController.m:1136) 4 UIKit 0x1897e6414 __56-[UIPresentationController runTransitionForCurrentState]_block_invoke + 332 (UIPresentationController.m:704) 5 UIKit 0x18973cb70 _runAfterCACommitDefernetworkingBlocks + 292 (UIApplication.m:2312) 6 UIKit 0x18974a030 _cleanUpAfterCAFlushAndRunDefernetworkingBlocks + 92 (UIApplication.m:2290) 7 UIKit 0x18947dc24 _afterCACommitHandler + 96 (UIApplication.m:2342) 8 CoreFoundation 0x184750588 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 32 (CFRunLoop.c:1620) 9 CoreFoundation 0x18474e32c __CFRunLoopDoObservers + 372 (CFRunLoop.c:1716) 10 CoreFoundation 0x18474e75c __CFRunLoopRun + 928 (CFRunLoop.c:2558) 11 CoreFoundation 0x18467d680 CFRunLoopRunSpecific + 384 (CFRunLoop.c:2814) 12 GraphicsServices 0x185b8c088 GSEventRunModal + 180 (GSEvent.c:2245) 13 UIKit 0x1894f4d90 UIApplicationMain + 204 (UIApplication.m:3681) 14 MyCoolApp 0x100083564 0x10007c000 + 30052 15 libdyld.dylib 0x18421e8b8 start + 4 (start_glue.s:80) 

Entonces, el problema terminó siendo que tenía un UIAlertController que estaba presentando de forma incorrecta. Esto es lo que causó el crash.

 UIAlertController *alert = [UIAlertController alertControllerWithTitle:NULL message:NULL prefernetworkingStyle:UIAlertControllerStyleActionSheet]; [alert addAction:[UIAlertAction actionWithTitle:copyKey style:UIAlertActionStyleDefault handler:alerAction]]; [alert addAction:[UIAlertAction actionWithTitle:shareKey style:UIAlertActionStyleDefault handler:alerAction]]; [alert addAction:[UIAlertAction actionWithTitle:cancelKey style:UIAlertActionStyleCancel handler:alerAction]]; //THIS LINE CRASHED IT [self presentViewController:alert animated:1 completion:NULL]; 

Simplemente no había hecho las testings adecuadas en el iPad. Cuando intenté esto con el depurador conectado, se bloqueó y me dio un post muy útil, aquí hay un extracto: "Debe proporcionar información de location para este popover a través del popoverPresentationController del controller de alertas" . Así es como lo presento ahora y funciona.

 [alert setModalPresentationStyle:UIModalPresentationPopover]; UIPopoverPresentationController *popPresenter = [alert popoverPresentationController]; popPresenter.sourceView = self.view; popPresenter.sourceRect = alertSourceRect; [self presentViewController:alert animated:YES completion:nil];