Я хотел бы знать, что такое @interface в объекте C? это просто то место, где программист хочет объявить переменные, имя класса или имена методов ...? Я не уверен, что это похоже на интерфейс в Java. И про @protocol в объекте C. Вроде интерфейс на Яве больше нравится. Может ли кто-нибудь дать мне подробное объяснение, пожалуйста. Я действительно ценю это.
objective-c
Рокер
источник
источник
myObject.lpVtbl->x(&myObject)
), а через двойной интерфейс, аналогичный cmyObject.lpVtbl->Invoke(&myObject, "x", &argArray);
. Из-за этого протоколы и интерфейсы, кажется, служат для предоставления компилятору информации для генерации времени выполнения и проверки типов во время компиляции. Таким образом, в C ++ нет настоящей параллели, если вы не добавите в свой проект скриптовый движок / COM.наверное хорошо, если вы посмотрите на это + я подумал, что это здорово помогло понять
Из статьи:
@интерфейс
C ++
Foo.h
#ifndef __FOO_H__ #define __FOO_H__ class Foo { ... };
Foo.cpp
#include "Foo.h" ...
Цель-C
Foo.h
@interface Foo : NSObject { ... } @end
Foo.m
#import "Foo.h" @implementation Foo ... @end
@protocol
C ++
struct MyInterface { void foo() = 0; } class A : MyInterface { public: void override foo() { ... } }
Цель-C
@protocol MyInterface -(void) foo; @end @interface Foo : NSObject <MyInterface> { -(void) foo {...} ... } @end
источник
@protocol
определяет некоторые общие методы,@interface
определяет некоторые специальные методы и@implementation
реализует этот интерфейс.@interface
не имеет никакой реализации. Также, еслиfoo
метод аналогичен методу протокола, поэтому его не следует повторять на интерфейсе.@interface
В Objective-C не имеет ничего общего с Java интерфейсов. Он просто объявляет публичный интерфейс класса, его публичный API. (И переменные-члены, как вы уже заметили.) Интерфейсы в стиле Java называются протоколами в Objective-C и объявляются с помощью@protocol
директивы. Вам следует прочитать «Язык программирования Objective-C» от Apple, это хорошая книга - короткая и очень доступная.источник