2 Stimmen

Wie kann man zwei Klassen auf derselben Ebene erben?

Ich bin neu auf dem Gebiet des iPhone. Ich versuche, eine iPhone-App mithilfe von Cocos2d zu erstellen. Ich habe diese Art von Classe wie folgt verwendet-

@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

und ich möchte zwei Klassen (FlipView, HelloController) zu MenuLayerClass erben. aber wie kann ich es tun. Eigentlich, was wird Syntax sein. Pls Antwort jeder Kommentar mit Code oder Syntax, wie ich es tun kann.

8voto

Rog Punkte 16916

Das können Sie nicht. Wie Clark sagt, unterstützt Objective-C keine Mehrfachvererbung. Das liegt daran, dass die Designer glauben, dass die Vorteile der Mehrfachvererbung die Komplexität und das schlechte Design, das sie fördert, nicht rechtfertigen.

Stattdessen haben sie etwas aufgenommen, das Ihren Bedürfnissen entspricht. Mit der Direktive @protocol können Sie ein "Protokoll" deklarieren. Ein Protokoll beschreibt eine Reihe von Methoden, auf die eine Klasse reagiert, aber keine Daten zu einem Objekt hinzufügen kann.

Um ein Protokoll zu verwenden, fügen Sie den Protokollnamen in spitzen Klammern hinter der Superklasse ein.

z.B..

@protocol myProtocol
-(void)myProtocolMethod
@end

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

Gibt eine NSObject-Unterklasse, die auch auf (void)myProtocolMethod Nachrichten.

Das heißt, ich würde mit Clark zustimmen, dass Sie Ihr Design überprüfen sollten - mit einem einzigen Objekt, das sowohl FlipView, HelloController ist nicht gut klingen. Du solltest wahrscheinlich einen FlipController implementieren und eine dritte Klasse (das Modell) verwenden, um den Zustand zwischen den beiden Controllern zu synchronisieren - oder wenn deine App sehr einfach ist, eine einzelne Klasse haben, die als Delegat für FlipView und UIController fungiert.

1voto

clarkcox3 Punkte 580

Das ist nicht möglich, da Objective-C keine Mehrfachvererbung kennt. Außerdem ist es nicht wirklich sinnvoll, eine einzelne Klasse sowohl als View als auch als View-Controller zu verwenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X