我正在为这种情况寻找好的模式。让我们上课与代表:
@protocol MyDelegate
-(void) someEvent;
@end
@interface MyServiceClass
@property (nonatomic,weak) id<MyDelegate> delegate;
@end
我们有这个类的两个实例。例如serviceObject1和serviceObject2。现在在我们的控制器中,我们希望从两个实例接收事件:
-(void) registerDelegates {
serviceObject1.delegate=self;
serviceObject2.delegate=self;
}
-(void) someEvent {
// do something
}
除了将来自两个实例的事件抛出到一个someEvent方法之外,一切都很好。对于我来说,将serviceClass1和serviceClass2中的事件分离到不同的方法会更加舒适。
我看到了三种方法,但不喜欢其中任何方法:
可能存在我错过的另一种解决方案吗?
答案 0 :(得分:3)
处理方法是将MyServiceClass实例作为方法参数之一传递,基本上就是你为#1编写的内容。
Apple是如何做到这一点的,以及它的标准做法。
@protocol MyDelegate
-(void) someEventFromService:(MyServiceClass *serviceClass);
@end