2009-02-03 4 views
2

Я новичок в области iPhone. Я пытаюсь создать приложение для iPhone с помощью Cocos2d. Я использовал этот тип Класса как bellow-Как можно наследовать два класса на одном уровне?

@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. но как я могу это сделать. Собственно, какой будет синтаксис. Pls ответит на любой комментарий с помощью кода или синтаксиса, как я могу это сделать.

+0

Возможно, вам стоит прочитать немного о методах MVC в развитии какао. Попробуйте видео Apple. –

+0

Это звучит как перефразирование вопроса, который вы только что задали. Вы должны отредактировать оригинал, а не задавать новый вопрос. –

ответ

1

Вы не можете, так как Objective-C не имеет множественного наследования. Кроме того, на самом деле не имеет смысла, чтобы один класс был как представлением, так и контроллером представления.

+0

Точно, основное внимание уделяется использованию делегатов, а не подклассов – epatel

8

Вы не можете. Как говорит Кларк, Objective-C не поддерживает множественное наследование. Это объясняется тем, что дизайнеры полагают, что преимущества множественного наследования не оправдывают сложность и плохой дизайн, которые он поощряет.

Вместо этого они включили то, что удовлетворит ваши потребности. Вы можете объявить «протокол» с помощью директивы @protocol. Протокол описывает набор методов, на которые отвечает класс, но не может добавлять данные к объекту.

Чтобы использовать протокол, вы включаете имя протокола в угловые скобки после суперкласса.

например.

@protocol myProtocol 
-(void)myProtocolMethod 
@end 

@interface myClass : NSObject <myProtocol> 
{ 
    int someData; 
} 

Даст подкласса NSObject, которые также должны отвечать на (void)myProtocolMethod сообщений.

Это говорит о том, что я согласен с Кларком в том, что вы должны рассмотреть свой дизайн - имея единственный объект, который является FlipView, HelloController звучит не очень хорошо. Вероятно, вы должны использовать FlipController и использовать третий класс (модель) для синхронизации состояния между двумя контроллерами - или если ваше приложение очень простое, у вас есть один класс, который действует как делегат для FlipView и UIController.

Смежные вопросы