2016-10-18 4 views
1

Ich benutze pdfTron mit iOS. Ich habe PDFTron erfolgreich in meine iOS-Anwendung integriert.Absturz mit pdfTron Integration iOS

Jetzt habe ich ein Problem, wo, wenn eine bereits gemachte Annotation ausgewählt ist und ich versuche, von der Ansicht zurückzukehren, ist die Anwendung mit EXC_BAD_ACCESS Fehler. Ich kann den vorherigen Bildschirm sehen, während ich zurück gehe. Nachdem der vorherige Bildschirm angezeigt wird, stürzt die App in main ab. Dies passiert nicht, wenn ich zurückkomme, ohne die Annotation ausgewählt zu haben.

* thread #1: tid = 0x14c78, 0x0281b3f6 myProject`___lldb_unnamed_symbol40638$$myProject + 22, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x800000a0) 
frame #0: 0x0281b3f6 myProject`___lldb_unnamed_symbol40638$$myProject + 22 
frame #1: 0x0250ce31 myProject`___lldb_unnamed_symbol28291$$myProject + 49 
frame #2: 0x01bf03f8 myProject`TRN_AnnotIsValid + 40 
frame #3: 0x01afd0ba myProject`ObjCPP_PTAnnot_IsValid + 34 
frame #4: 0x01a80e0a myProject`-[PTAnnot IsValid] + 32 
frame #5: 0x0199d062 myProject`-[AnnotEditTool deselectAnnotation] + 66 
frame #6: 0x0198e96b myProject`-[AnnotEditTool willMoveToSuperview:] + 91 
frame #7: 0x066e21ce UIKit`__UIViewWillBeRemovedFromSuperview + 305 
frame #8: 0x066e1ee3 UIKit`-[UIView(Hierarchy) removeFromSuperview] + 99 
frame #9: 0x019a0c09 myProject`-[ToolManager dealloc] + 73 
frame #10: 0x06ef413d UIKit`-[UIView(UIKitManual) release] + 142 
frame #11: 0x01a7acae myProject`-[PTPDFViewCtrl dealloc] + 588 
frame #12: 0x06ef413d UIKit`-[UIView(UIKitManual) release] + 142 
frame #13: 0x08e0ca57 CoreFoundation`CFRelease + 727 
frame #14: 0x08e2285e CoreFoundation`-[__NSArrayM dealloc] + 142 
frame #15: 0x08966060 libobjc.A.dylib`objc_object::sidetable_release(bool) + 238 
frame #16: 0x08965361 libobjc.A.dylib`objc_release + 65 
frame #17: 0x0896652d libobjc.A.dylib`(anonymous namespace)::AutoreleasePoolPage::pop(void*) + 371 
frame #18: 0x08e2d508 CoreFoundation`_CFAutoreleasePoolPop + 24 
frame #19: 0x08e65cdc CoreFoundation`__CFRunLoopRun + 2364 
frame #20: 0x08e650e6 CoreFoundation`CFRunLoopRunSpecific + 470 
frame #21: 0x08e64efb CoreFoundation`CFRunLoopRunInMode + 123 
frame #22: 0x0a49a664 GraphicsServices`GSEventRunModal + 192 
frame #23: 0x0a49a4a1 GraphicsServices`GSEventRun + 104 
frame #24: 0x0662bbfa UIKit`UIApplicationMain + 160 
* frame #25: 0x0013c23c myProject`main(argc=1, argv=0xbffaa928) + 140 at main.m:16 
frame #26: 0x09e6ca21 libdyld.dylib`start + 1 
+0

Können Sie dies in den Beispielprojekten CompleteReader oder PDFViewCtrl, SDK reproduzieren? Welche Version von PDFNet benutzen Sie auch? – Ryan

+0

Nein Ich kann dies im CompleteReader nicht reproduzieren. Auch ich habe meine Frage aktualisiert, indem ich die Backtrace-Protokolle als Referenz angehängt habe. –

Antwort

0

Die erste Sache, die Annot :: IsValid tut, ist zu prüfen, ob der Zeiger Null ist oder nicht. Wenn also IsValid abstürzt, bedeutet dies, dass das zugrunde liegende PDFDoc-Objekt zerstört wurde oder der zugrunde liegende Zeiger irgendwie ungültig ist.

Als erstes muss geprüft werden, ob das PDFDoc-Objekt aktiv ist oder nicht. Wenn es zerstört wird, sollten keine damit verbundenen Objekte verwendet werden.

Oder Sie löschten das Annotation-Objekt früher irgendwie, oder der zugrunde liegende Zeiger wurde geändert. Objektreferenzen sollten nicht beibehalten werden, wenn sie verschoben/gelöscht werden. Wenn Sie Anmerkungen für längere Zeit beibehalten möchten, lesen Sie bitte post.