当前位置:  开发笔记 > IOS > 正文

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

如何解决《如何在同一层继承两个类?》经验,为你挑选了1个好方法。

我是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

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



1> Rog..:

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

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

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

例如

@protocol myProtocol
-(void)myProtocolMethod
@end

@interface myClass : NSObject 
{
    int someData;
}

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

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

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有