I've noticed a significant spike in app crashes on iOS 11 and up with this message. This appears to be an internal API that UIKit
is calling, the stack trace reveals that it's something inside UITableViewCell
:
Application Specific Information:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView setDrawsWithVibrantLightMode:]: unrecognized selector sent to instance 0x15defa6d0'
Last Exception Backtrace:
0 CoreFoundation 0x0000000181691d04 __exceptionPreprocess + 124
1 libobjc.A.dylib 0x00000001808e0528 objc_exception_throw + 52
2 CoreFoundation 0x000000018169f1c8 -[NSObject(NSObject) doesNotRecognizeSelector:] + 136
3 UIKit 0x000000018ae8711c -[UIResponder doesNotRecognizeSelector:] + 292
4 CoreFoundation 0x00000001816976b0 ___forwarding___ + 1376
5 CoreFoundation 0x000000018157d01c _CF_forwarding_prep_0 + 88
6 UIKit 0x000000018b022d58 -[UITableViewCell _setSeparatorDrawsInVibrantLightMode:] + 216
7 UIKit 0x000000018abf5ef0 -[UITableViewCell setSeparatorColor:] + 340
8 UIKit 0x000000018abf451c __53-[UITableView _configureCellForDisplay:forIndexPath:]_block_invoke + 1228
9 UIKit 0x000000018aad6e34 +[UIView(Animation) performWithoutAnimation:] + 100
10 UIKit 0x000000018abf3f64 -[UITableView _configureCellForDisplay:forIndexPath:] + 268
11 UIKit 0x000000018ae03a00 -[UITableView _createPreparedCellForGlobalRow:withIndexPath:willDisplay:] + 844
12 UIKit 0x000000018ae03eac -[UITableView _createPreparedCellForGlobalRow:willDisplay:] + 76
13 UIKit 0x000000018ade39f0 -[UITableView _updateVisibleCellsNow:isRecursive:] + 2136
14 UIKit 0x000000018ab99508 -[UITableView layoutSubviews] + 136
I've been unable to reproduce this but it's crashing consistently on a number of user devices and there's no common thread between device or OS version except that it's only occurring on iOS 11 and up.
Eventually figured out that this is a bug in UIKit
when the Darken Colors setting is enabled under Accessibility settings:
Settings -> General -> Accessibility -> Increase Contrast -> Darken Colors
If you're experiencing this crash try toggling that setting on/off to reproduce it.
For now we've suppressed this by simply implementing this method as a Void
function in an extension:
@available(iOS 11.0, *)
extension UITableViewCell {
func _setSeparatorDrawsInVibrantLightMode(_ value: Bool) {
}
}
So UIKit
can call it but it just doesn't do anything (and doesn't crash the app).
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