Сбой при интеграции PDFTron iOS

#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 живым или нет. Если он уничтожен, то не следует использовать связанные с ним объекты.

Или вы каким-то образом удалили объект аннотации ранее, или его базовый указатель был изменен. Ссылки на объекты не должны храниться на случай, если они будут перемещены / удалены. Если вы хотите сохранить аннотации на длительный срок, пожалуйста, ознакомьтесь с этим сообщением.