MulleObjCTaggedPointer

Protocol for implementing tagged pointer support in mulle-objc. Tagged pointers store small values directly in pointer bits to avoid heap allocation.

Required Methods

Value Access

Validation

Helper Functions

Usage Example

@interface MyNumber : NSObject <MulleObjCTaggedPointer>
@end

@implementation MyNumber

+ (BOOL) mulleIsTaggedPointerClass
{
    return YES;
}

+ (instancetype) mulleTaggedPointerFromIndex:(NSUInteger)index
{
    return MulleObjCTaggedPointerCreate(self, index);
}

- (NSUInteger) mulleTaggedPointerIndex
{
    return MulleObjCTaggedPointerGetIndex(self);
}

@end

// Usage
id number = [MyNumber mulleTaggedPointerFromIndex:42];
NSUInteger value = [number mulleTaggedPointerIndex];

Important Notes

  1. Memory Layout
  2. Thread Safety
  3. Best Practices
  4. Performance

Note: Tagged pointers are an optimization that avoids heap allocation for small values by storing them directly in pointer bits. This improves performance and reduces memory usage.