I asked this question on Apple Dev forum, but still didn't get an answer.
We expirience 100% iOS 8 devices crash:
+[UIPasteboard _accessibilityUseQuickSpeakPasteBoard]: unrecognized selector sent to class
The stack trace is:
Thread : Fatal Exception: NSInvalidArgumentException
0 CoreFoundation 0x2889ec1f __exceptionPreprocess + 126
1 libobjc.A.dylib 0x36049c8b objc_exception_throw + 38
2 CoreFoundation 0x288a3f55 __CFExceptionProem
3 CoreFoundation 0x288a1def ___forwarding___ + 354
4 CoreFoundation 0x287d3df8 _CF_forwarding_prep_0 + 24
5 UIAccessibility 0x331fc157 +[UIPasteboard_QSExtras pasteboardWithName:create:] + 30
6 MyApp 0x002eb507 -[TJEventOptimizer .cxx_destruct]
7 MyApp 0x002eb28b -[TJEventOptimizer .cxx_destruct]
8 MyApp 0x002f0c2b -[TJEventOptimizer .cxx_destruct]
9 MyApp 0x002eeedb -[TJEventOptimizer .cxx_destruct]
10 Foundation 0x295adb5b __NSThread__main__ + 1118
11 libsystem_pthread.dylib 0x3670ce93 _pthread_body + 138
12 libsystem_pthread.dylib 0x3670ce07 _pthread_start + 118
13 libsystem_pthread.dylib 0x3670ab90 thread_start + 8
Despite the fact, TapJoy is captured in the stack trace, their FAQ says it is ocaisonally wrong and has nothing to do with TapJoy's code, but rather iOS 8 bug.
Is it correct?
What accessibility setting related to the crash?
This problem appears because TapJoy has used categories in static library (that's UIPasteboard_QSExtras
)
The solution is super simple, you need to notify linker about that
1) Click on the project
2) Click on the target
3) Open Build Settings
tab
4) Search for Other Linker Flags
5) Double click on Other Linker Flags
6) Add -ObjC
and -all_load
flags
7)
Remove binary (delete from device/simulator),
Clean project (hitting cmd+shift+k
) and
build again (hitting cmd+b
).
You're ready to go!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With