[objective-c] @interface 및 @protocol 설명?

Objective C의 @interface가 무엇인지 알고 싶습니다. 프로그래머가 변수, 클래스 이름 또는 메서드 이름을 선언하려는 곳입니까? Java의 인터페이스와 같은지 확실하지 않습니다. 객관적인 C의 @ 프로토콜에 대해서도 마찬가지입니다. Java의 인터페이스처럼 보입니다. 누구든지 저에게 자세한 설명을 줄 수 있습니까? 정말 감사합니다.



답변

인터페이스는 클래스의 속성과 작업을 정의하는 곳입니다. 구현도 설정해야합니다.

프로토콜은 자바 용 인터페이스와 같습니다.

예 :

@protocol Printing
    -(void) print;
@end

구현 가능

(인터페이스에서 혼란스럽게) 선언하여

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

자바 개발자에게 혼란스러운 점은 중괄호 {}가 인터페이스의 끝이 아니라는 것입니다.

@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


답변

이걸 보시면 좋겠네요 + 이해하는데 큰 도움이되었다고 생각 했어요

기사에서 :

@상호 작용

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

@실험 계획안

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


답변

@interface목표 – C에서 자바 인터페이스와는 아무 상관이있다. 단순히 클래스의 공용 인터페이스 인 공용 API를 선언합니다. (그리고 이미 관찰 한 바와 같이 멤버 변수.) Java 스타일 인터페이스는 Objective-C에서 프로토콜이라고하며 @protocol지시문을 사용하여 선언됩니다 . Apple의 The Objective-C Programming Language 를 읽어야합니다. 책은 짧고 쉽게 접근 할 수있는 좋은 책입니다.


답변