You get poor access because Swift classes no longer have traditional iVars (try grabbing the Swift class iVar and see for yourself). But Swift classes are also Objective-C objects for the runtime, and no paths are displayed there, except for Swift classes.
What happens is the runtime, which gives you a fake iVar, which, in his opinion, indicates the correct bias in the class definition (possibly 0 or so, because it does not exist). When you try to get the mentioned iVar, the runtime literally derefs you some of the bytes of the object and tries to wrap it back in the Objective-C pointer . Often this data has a tag bit set unintentionally and therefore often matches with tagged classes (in my tests I reliably returned a pointer with tags for what was considered NSMutableData runtime).
In short: you can no longer do this.
source share