Apple Enterprise - NeXTanswers Support Archive

Search NeXTanswers for:

Q: How do you store and access elements in the Storage class?

A: Although Storage's instance variables permit you to access the data directly, this approach is discouraged. Instead, use the Storage object's methods (such as addElement: and elementAt:) to store and access the elements.

Following is a code snippet that creates an empty Storage object, adds new elements to it, and then references them. The type-specific code is #defined for clarity. Note that the elements need to be added and referenced as pointers.

#import <objc/Storage.h>

@interface SomeObject:Object
@implementation SomeObject

#if 1
#define TYPE char *
#define PRINT(var1, var2) printf("first = %s second = %s\n", var1, var2);
#define VAL1 ("hello")
#define VAL2 ("world")
#define TYPE int
#define PRINT(var1, var2) printf("first = %d second = %d\n", var1, var2);
#define VAL1 (-5)
#define VAL2 (32)

- appDidInit:sender
Storage *store;
TYPE a = VAL1;
TYPE b = VAL2;
TYPE *a1;
TYPE *b1;

store = [[Storage alloc] initCount:0 elementSize:sizeof(TYPE)
[store addElement:(void *)&a];
[store addElement:(void *)&b];
PRINT(a, b);

a1 = (TYPE *) [store elementAt:0];
b1 = (TYPE *) [store elementAt:1];
PRINT(*a1, *b1);

return self;


Valid for 2.0, 3.0

OpenStep | Alliances | Training | Tech Support | Where to Buy