Расширения

@interface Point : NSObject
@property (nonatomicdouble x;
@property (nonatomicdouble y;
@end

@implementation Point
@end

//category adds the subscript
@interface Point (Indexing)
- (NSNumber *)objectAtIndexedSubscript:
    (NSUInteger)i;
@end

@implementation Point (Indexing)
- (NSNumber *)objectAtIndexedSubscript:
    (NSUInteger)i {
    return i == 0 ? @(self.x) : @(self.y);
}
@end

Point *p = [Point new];
p.x = 1;
p.y = 2;

NSNumber *x = p[0];
//x is 1

NSNumber *y = p[1];
//y is 2