Objective-C and Swift runtime metadata
Compiled Apple software often contains language-runtime metadata that can reveal useful structure even when conventional symbols are limited.
For Objective-C, analysts commonly encounter metadata associated with:
- classes and metaclasses;
- method lists;
- selectors;
- protocols;
- categories;
- class and selector reference sections.
This exists because Objective-C's runtime model depends heavily on named, discoverable objects and message dispatch.
Swift has a different runtime and metadata model, but compiled Swift images also contain descriptors, type metadata, protocol-conformance information, mangled names, reflection-related data, and runtime support references.
Metadata is evidence about structure
Runtime metadata can suggest:
- object relationships;
- protocol adoption;
- available methods or selectors;
- type names;
- language/runtime boundaries.
It does not automatically tell you the behavior of a method. You still need to connect metadata to code, data flow, and call relationships.
Cross-checking
A reliable workflow correlates:
runtime metadata ↔ references ↔ disassembly ↔ strings ↔ imports
Any one of those sources can be incomplete. Together they can reconstruct a much stronger model.