子类的代表?

我有一个叫做ToolbarView的类,它是UIView一个子类,基本上创build了一个消失/重新出现的UIToolbarUIView 。 我还有一个名为DraggableToolbarViewToolbarView的子类,它使用户能够在屏幕上拖动视图。

我需要为ToolbarView创build一个委托,以便在工具栏重新出现和消失时通知另一个对象/类。 我还需要为DraggableToolbarView创build一个委托,以便在拖动视图时通知另一个对象/类。

目前,我已经创build了一个单独的委托,但我想知道是否有一个更好的模式呢? 也许为ToolbarView实现一个委托,并将DraggableToolbarView的委托方法列为可选项? 或者有没有一种方法来委派一个委托?

什么是最好的/最干净的方式来完成这个?

如果你为你的委托方法创build一个协议(无论如何总是一个好主意),你可以让另一个协议采用第一个协议。 这build立了一种类似于inheritance的关系:

 @protocol ToolbarViewDelegate // some methods @end @protocol DraggableToolbarViewDelegate <ToolBarViewDelegate> // additional methods @end 

是的,你可以inheriting协议:

 @protocol Proto1 @reqired -(void) somethingHappened:(id) sender; @optional -(void) somethingElseHappened:(id) sender; @end @protocol Proto2<Proto1> // this now contains all of the method signatures found in proto1, with the addition of new ones! -(void) somethingSpecialHappened:(id) sender; @end 

我想你是对的。

考虑UITextView ,它是UIScrollView的子类。 每个都有自己的委托协议,负责对一组特定的消息作出反应。 只要你把可见性和拖拽作为独立的考虑,允许不同的对象来处理他们的委托,似乎是合乎逻辑的。