我正在为这种情况寻找好的模式。让我们与委托(delegate)一起上课:
@protocol MyDelegate
-(void) someEvent;
@end
@interface MyServiceClass
@property (nonatomic,weak) id<MyDelegate> delegate;
@end
我们有这个类的两个实例。例如 serviceObject1 和 serviceObject2。现在在我们的 Controller 中,我们希望接收来自两个实例的事件:
-(void) registerDelegates {
serviceObject1.delegate=self;
serviceObject2.delegate=self;
}
-(void) someEvent {
// do something
}
一切都很好,除了来自两个实例的事件将被抛出到一个 someEvent 方法。对我来说,将事件从 serviceClass1 和 serviceClass2 分离到不同的方法会更舒服。
我看到了三种方法,但不喜欢其中任何一种:
可能存在我错过的另一个解决方案吗?
最佳答案
处理这种情况的方法是将 MyServiceClass 实例作为方法参数之一传递,基本上就是您为 #1 编写的内容。
这就是 Apple 的做法,也是一种标准做法。
@protocol MyDelegate
-(void) someEventFromService:(MyServiceClass *serviceClass);
@end
关于ios - 如何在一个类中实现两个相同类型的委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33318557/