如何在同一层继承两个类?

2 iphone objective-c cocos2d-iphone

我是iPhone领域的新人.我正在尝试使用Cocos2d构建iPhone应用程序.我使用过这种类型的classe如吼叫 -

@interface MenuScene : Scene {}
@end


@interface FlipView : UIImageView
{
    CGPoint startTouchPosition;
    NSString *dirString;
    UIImageView *firstPieceView;   
    UIImageView *secondPieceView;

}
@end

@interface HelloController : UIViewController 
@end


@interface MenuLayer: Layer{        
        Menu * menu;        
    NSString *dirString;
    CGPoint startTouchPosition;
}
-(void) button1: (id)sender;
-(void) button2: (id)sender;
-(void) black_jack: (id)sender;
@end
Run Code Online (Sandbox Code Playgroud)

我想继承两个类(FlipView,HelloController)到MenuLayerClass.但我怎么能这样做.实际上会是什么语法.请用代码或语法回复任何评论我怎么做.

Rog*_*Rog 8

你不能.正如Clark所说,Objective-C不支持多重继承.这是因为设计师认为多重继承的优点并不能证明它所鼓励的复杂性和糟糕的设计.

相反,它们包含了一些能够满足您需求的东西.您可以使用@protocol指令声明"协议".协议描述了类响应但不能向对象添加数据的一组方法.

要使用协议,请在超类之后的尖括号中包含协议名称.

例如

@protocol myProtocol
-(void)myProtocolMethod
@end

@interface myClass : NSObject <myProtocol>
{
    int someData;
}
Run Code Online (Sandbox Code Playgroud)

将给出一个必须也响应(void)myProtocolMethod消息的NSObject子类.

也就是说,我同意Clark的观点,你应该检查你的设计 - 有一个FlipView的单个对象,HelloController听起来不太好.您应该实现一个FlipController并使用第三个类(模型)来同步两个控制器之间的状态 - 或者如果您的应用程序非常简单,则有一个类充当FlipView和UIController的委托.