Ich möchte wissen, was die @ Schnittstelle in Ziel C ist? ist es nur dort, wo der Programmierer die Variablen, den Klassennamen oder die Methodennamen deklarieren möchte ...? Ich bin nicht sicher, ob es wie eine Schnittstelle in Java ist. Und über das @ -Protokoll in Ziel C auch. Es scheint wie die Schnittstelle in Java mehr. Könnte mir bitte jemand eine detaillierte Erklärung geben. Ich weiß das wirklich zu schätzen.
quelle
myObject.lpVtbl->x(&myObject)
), sondern über eine doppelte Schnittstelle, analog zu cmyObject.lpVtbl->Invoke(&myObject, "x", &argArray);
. Aus diesem Grund scheinen Protokolle und Schnittstellen dazu zu dienen, dem Compiler Informationen zur Generierung von Laufzeit- und Kompilierungszeit-Typüberprüfungen bereitzustellen. Daher gibt es in C ++ keine echte Parallele, es sei denn, Sie führen eine Skript-Engine / COM in Ihr Projekt ein.wahrscheinlich gut , wenn man einen Blick auf nehmen dieses + Ich dachte , es war eine große Hilfe zu verstehen ,
Aus dem Artikel:
@Schnittstelle
C ++
Foo.h
#ifndef __FOO_H__ #define __FOO_H__ class Foo { ... };
Foo.cpp
#include "Foo.h" ...
Ziel c
Foo.h
@interface Foo : NSObject { ... } @end
Foo.m
#import "Foo.h" @implementation Foo ... @end
@Protokoll
C ++
struct MyInterface { void foo() = 0; } class A : MyInterface { public: void override foo() { ... } }
Ziel c
@protocol MyInterface -(void) foo; @end @interface Foo : NSObject <MyInterface> { -(void) foo {...} ... } @end
quelle
@protocol
definiert einige allgemeine Methoden,@interface
definiert einige benutzerdefinierte Methoden und@implementation
implementiert diese Schnittstelle.@interface
hat keine Implementierung. Auch wenn diefoo
Methode mit der des Protokolls identisch ist, sollte sie auf der Schnittstelle nicht wiederholt werden.Das
@interface
in Objective-C hat nichts mit Java-Schnittstellen zu tun. Es deklariert einfach eine öffentliche Schnittstelle einer Klasse, ihre öffentliche API. (Und Mitgliedsvariablen, wie Sie bereits beobachtet haben.) Java-Schnittstellen werden in Objective-C als Protokolle bezeichnet und mithilfe der@protocol
Direktive deklariert . Sie sollten die Programmiersprache Objective-C von Apple lesen , es ist ein gutes Buch - kurz und sehr zugänglich.quelle