Reflection (late binding)

#import <objc/runtime.h>

Class threadType =
    NSClassFromString(@"NSThread");

NSString *name =
    NSStringFromClass(threadType);
//name is "NSThread"

bool isMeta = class_isMetaClass(threadType);
//isMeta is 0

Class baseType =
    class_getSuperclass(threadType);
//baseType is NSObject

size_t instanceSize =
    class_getInstanceSize(threadType);