@interface и @protocol объяснение?

Я хотел бы знать, что такое @interface в объективе C? это именно там, где программист хочет объявить переменные, имена классов или имена методов...? Я не уверен, похоже ли это на интерфейс в Java. А также о @protocol в объекте C. Похоже, что интерфейс в Java больше. Может ли кто-нибудь дать мне подробное объяснение, пожалуйста. Я действительно ценю это.

Ответ 1

В интерфейсе вы определяете атрибуты и операции класса. Вы также должны указать реализацию.

Протокол похож на интерфейс для java.

например.

@protocol Printing
    -(void) print;
@end

может быть реализовано

путем объявления (смутно в интерфейсе)

@interface Fraction: NSObject <Printing, NSCopying> {
//etc..

Непонятная вещь для разработчиков Java заключается в том, что фигурные скобки {} не являются концом интерфейса, например.

@interface Forwarder : Object
{
    id recipient; 
} //This is not the end of the interface - just the operations


- (id) recipient;
- (id) setRecipient:(id) _recipient; 
//these are attributes.

@end
//This is the end of the interface

Ответ 2

возможно, хорошо, если взглянуть на this + Я подумал, что это была большая помощь для понимания

Из статьи:

@interface

С++

foo.h

#ifndef __FOO_H__
#define __FOO_H__
class Foo
{
...
};

foo.cpp

#include "Foo.h"
...

Objective-C

foo.h

@interface Foo : NSObject
{
...
}
@end

Foo.m

#import "Foo.h"

@implementation Foo
...
@end

@protocol

С++

struct MyInterface
{
  void foo() = 0;
}

class A : MyInterface
{
public:
  void override foo() { ... }
}

Objective-C

@protocol MyInterface
-(void) foo;
@end

@interface Foo : NSObject <MyInterface>
{
 -(void) foo {...}
...
}
@end

Ответ 3

@interface в Objective-C не имеет ничего общего с интерфейсами Java. Он просто объявляет открытый интерфейс класса, его общедоступный API. (И переменные-члены, как вы уже заметили.) Интерфейсы в стиле Java называются протоколами в Objective-C и объявляются с помощью директивы @protocol. Вы должны прочитать Apple Objective-C Язык программирования, это хорошая книга - короткая и очень доступная.