我想知道目标C中的@interface是什么?它只是程序员想要声明变量,类名或方法名称的地方......?我不确定它是否像Java中的界面。 关于目标C中的@protocol也是如此。它看起来像Java中的界面更多。 请问有谁给我详细解释。我真的很感激。
答案 0 :(得分:81)
您可以在界面中定义类的属性和操作。您也必须列出实施方案。
协议就像java的接口。
e.g。
@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
答案 1 :(得分:24)
来自文章:
<强> @interface 强>
#ifndef __FOO_H__
#define __FOO_H__
class Foo
{
...
};
#include "Foo.h"
...
@interface Foo : NSObject
{
...
}
@end
#import "Foo.h"
@implementation Foo
...
@end
<强> @protocol 强>
struct MyInterface
{
void foo() = 0;
}
class A : MyInterface
{
public:
void override foo() { ... }
}
@protocol MyInterface
-(void) foo;
@end
@interface Foo : NSObject <MyInterface>
{
-(void) foo {...}
...
}
@end
答案 2 :(得分:13)
Objective-C中的@interface
与Java接口无关。它只是声明一个类的公共接口,它的公共API。 (正如您已经观察到的那样,成员变量。)Java样式的接口在Objective-C中称为协议,并使用@protocol
指令声明。你应该阅读Apple的The Objective-C Programming Language,这是一本好书 - 简短且易于访问。