#ios #iphone #ipad #pdftron
#iOS #iPhone #iPad #pdftron
Вопрос:
Я использую PDFTron с iOS. Я успешно интегрировал PDFTron с моим приложением для iOS.
Теперь я сталкиваюсь с проблемой, когда, если выбрана уже созданная аннотация, и я пытаюсь вернуться из представления, приложение выходит из строя с ошибкой EXC_BAD_ACCESS. Я могу видеть предыдущий экран при возврате. После появления предыдущего экрана происходит сбой приложения в главном. Этого не происходит, когда я возвращаюсь без выбранной аннотации.
* 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
Комментарии:
1. Можете ли вы воспроизвести это в примерах проектов CompleteReader или PDFViewCtrl, SDK? Также какую версию PDFNet вы используете?
2. Нет, я не могу воспроизвести это в CompleteReader. Также я обновил свой вопрос, прикрепив журналы отслеживания для вашей справки.
Ответ №1:
Первое, что делает Ann::isValid, это проверяет, является ли указатель нулевым или нет. Итак, если isValid сбой, то это означает, что базовый объект PDFDoc был уничтожен, или базовый указатель каким-то образом недействителен.
Первое, что нужно проверить, является ли объект PDFDoc живым или нет. Если он уничтожен, то не следует использовать связанные с ним объекты.
Или вы каким-то образом удалили объект аннотации ранее, или его базовый указатель был изменен. Ссылки на объекты не должны храниться на случай, если они будут перемещены / удалены. Если вы хотите сохранить аннотации на длительный срок, пожалуйста, ознакомьтесь с этим сообщением.