Вы можете написать протокол (например, назвать его MutableArrayDelegate
), а затем расширить NSMutableArray
(обязательно вызовите [super ...]
соответственно), вызывая методы делегата, когда происходят определенные события.
Например,чтобы добавить прослушиватель при каждом добавлении объекта:
@protocol MutableArrayDelegate
- (void)mutableArrayDidAddObject:(NSMutableArray *)mutableArray;
@end
@interface ObservableMutableArray : NSMutableArray
@property (nonatomic, assign) id<MutableArrayDelegate> delegate;
@end
@implementation ObservableMutableArray
@synthesize delegate;
- (void)addObject:(id)anObject
{
[super addObject:anObject];
[delegate mutableArrayDidAddObject:self];
}
@end
Затем можно прослушивать события, назначив делегата вашему подклассу и реализовав протокол.