Iphone NSMutableArray大小的侦听器和观察器

Iphone NSMutableArray大小的侦听器和观察器,iphone,objective-c,ios,ipad,Iphone,Objective C,Ios,Ipad,在objective-C中是否可以这样做,假设我的数组计数是X,那么我希望它在发生这种情况时触发函数Y?那么NSArray计数的侦听器呢?我相信您可以创建一个侦听阵列更改的观察器。当它被触发时,您可以检查数组的大小,如果条件满足,则调用方法Y。我相信您可以创建一个观察者来侦听数组上的更改。当它被触发时,您可以检查数组的大小并在满足条件时调用方法Y。您可以编写一个协议(例如,调用它MutableArrayDelegate),然后在某些事件发生时扩展NSMutableArray(确保适当调用[sup

在objective-C中是否可以这样做,假设我的数组计数是X,那么我希望它在发生这种情况时触发函数Y?那么NSArray计数的侦听器呢?

我相信您可以创建一个侦听阵列更改的观察器。当它被触发时,您可以检查数组的大小,如果条件满足,则调用方法Y。

我相信您可以创建一个观察者来侦听数组上的更改。当它被触发时,您可以检查数组的大小并在满足条件时调用方法Y。

您可以编写一个协议(例如,调用它
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
@protocol MutableArrayDelegate
-(void)mutableArrayDidadObject:(NSMutableArray*)mutableArray;
@结束
@接口:NSMutableArray
@属性(非原子,赋值)id委托;
@结束
@表数组的实现
@综合代表;
-(void)addObject:(id)一个对象
{
[超级添加对象:一个对象];
[委托可变ArrayDidadObject:self];
}
@结束

然后,您可以通过将委托分配给子类并实现协议来侦听事件。

您可以编写一个协议(例如,将其称为
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
@protocol MutableArrayDelegate
-(void)mutableArrayDidadObject:(NSMutableArray*)mutableArray;
@结束
@接口:NSMutableArray
@属性(非原子,赋值)id委托;
@结束
@表数组的实现
@综合代表;
-(void)addObject:(id)一个对象
{
[超级添加对象:一个对象];
[委托可变ArrayDidadObject:self];
}
@结束

然后,您可以通过将委托分配给子类并实现协议来侦听事件。

这与您的问题非常相似:。这与您的问题非常相似:。如果您将子类
NSArray
划分为子类,则“必须覆盖基元实例方法
count
objectAtIndex:
”对于
NSMutableArray
您需要覆盖更多的方法:My bad。听起来你会经常打电话给
[super…]
。。。真的应该被否决吗?仍然提供所需的结果。不,调用
super
是不够的,您需要自己实现它
NSArray
NSMutableArray
是类集群,它们本身不实现任何功能。当你创建一个数组时,你会得到一个私有的子类,通常这对用法并不重要,只是一个实现细节,但这意味着当你需要自己实现基本实例方法和存储时,你不能依赖于
super
。如果你将
NSArray
子类化,你可以“必须覆盖基本实例方法
count
objectAtIndex:
”对于
NSMutableArray
,您需要覆盖更多方法:My bad。听起来您将调用
[super…]
很多…真的值得否决票吗?仍然提供了期望的结果。不,调用
super
是不够的,你需要自己实现它。
NSArray
NSMutableArray
是类群集,它们本身不实现任何东西。当你创建一个数组时,你会得到一个私有子类,通常情况下这对于使用来说并不重要,只是一个实现细节,但它意味着在进行子类化时,您需要自己实现基本实例方法和存储,您不能依赖于
super