@interface Point : NSObject
@property (nonatomic) double x;
@property (nonatomic) double 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