Sentry engineers discovered that iPadOS 26 broke their SDK by introducing a change where UIPrintPanelViewController overrides isKindOfClass: to return true for UISplitViewController casts despite not being a subclass. Through reverse engineering Apple's private frameworks and analyzing Objective-C's dynamic runtime, they traced the issue to a custom implementation that bypasses normal type-checking behavior. The team fixed the crash by adding a runtime check using respondsToSelector: before accessing methods, releasing the patch in SDK version 8.57.3.
Table of contents
The BeginningThe SearchBut How?Objective-C's Dynamic RuntimeReverse-Engineering to Prove a PointThe FixSort: