2014-09-24 7 views
11

La mia app (solo iOS 8) è stata rifiutata a causa di un arresto anomalo quando si tenta di utilizzare IAP. Ho provato praticamente ogni incanto del processo di acquisto in un build AdHoc ma non riesco a riprodurre un crash. Guardando il registro di crash allegato al team di revisione, vedo una traccia di stack molto strana nell'ultima eccezione di backtrace. Lo schianto sembra coinvolgere UIPopoverController, tuttavia la mia app, benché universale, non mostra in modo esplicito o implicito i popover. Qualcuno ha idea di cosa potrebbe innescare l'attività che sta causando questo arresto anomalo? Che cosa potrebbe causare la visualizzazione dei popover sulla mia app quando il team di revisori la guarda solo?Arresto anomalo dell'app in UIPopoverPresentationController ma nessun popover esplicito?

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 
+2

Visualizzi un UIActivityViewController in qualsiasi punto? Se è così, probabilmente stai [andando in crash quando viene visualizzato su un iPad] (http://stackoverflow.com/questions/25644054/uiactivityviewcontroller-crashing-on-ios8-ipads). Sembra che in iOS8 Apple mostrerà frammenti casuali di interfaccia utente in questo. Cerca i luoghi in cui presenti un UIViewController e prova a impostare le informazioni richieste sulla proprietà 'popoverPresentationController' del VC. Qual è solo iOS 8, quindi è necessario verificare che risponda a quel selettore. –

+0

Io presento un controller di visualizzazione attività, ma da nessuna parte nel flusso che stanno citando quando l'app è stata rifiutata. Inoltre, non sono chiaro sul motivo per cui questo sarebbe un problema solo sotto la recensione dell'app e non nelle versioni di AdHoc. – nickbona

+0

Potrebbe essere che tu stia rilevando un'eccezione nelle tue build ma Apple si rompe sul punto di lancio delle eccezioni? Non riesco a parlare di ciò che Apple ha fatto, ma stavo pensando che potresti non aver provato su iPad? Non dovrebbe * essere diverso sulle distribuzioni ad hoc, quindi se il tuo controller di visualizzazione delle attività funziona localmente su iPad, questo non deve essere il problema. Ma come ho detto, uno dei tuoi controller di visualizzazione è finito in questa presentazione pop-up. –

risposta

-2

Per prima cosa è necessario verificare UIPopoverPresentationController disponibile o meno.

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]; 
+0

per favore, fornire una spiegazione al codice – arghtype

+0

UIPopoverPresentationController classe non trovata compilatore in ipad-ios8 o superiore in modo da app è in crash. quindi per prima cosa controlliamo la classe UIPopoverPresentationController disponibile o meno –

4

Non so se è la stessa causa come la domanda originale, ma ho lo stesso errore esatto e la questione è stata utilizzando un UIAlertController con uno stile ActionSheet, presentando ha funzionato bene su iPhone, ma iPad richiede un sourceview a essere impostato - https://stackoverflow.com/a/24233937/285694