在目标C中,java中接口的等价概念是什么?我想创建一个接口并定义一些公共变量和方法,这些变量和方法将由从我的接口继承的许多类共享。当外面的任何类想要使用子类时,它将获得我的接口的引用对象,它将指向正确的子类。
如何在Objective C中实现这一目标?
答案 0 :(得分:5)
答案 1 :(得分:5)
在Objective-C中,您可以通过使用Protocols来实现这一目标。协议基本上是Java中接口的前身,因此大多数行为应该是自然而然的。
协议声明如下所示:
@protocol Foo
-(void) foo;
-(int) boo: (int) arg;
@end
它可以由一个类实现。在下面的例子中,你会说MyClass符合Foo协议。
@interface MyClass <Foo>
{
}
@end
@implementation MyClass
-(void) foo {
//do something
}
-(int) boo: (int) arg {
//do something else
return arg;
}
@end
最后,你可以像这样传递它们:
-(void) someMethod: (id<Foo>) arg;
如果您需要更具体地说明对象,也可以像这样使用它们:
-(void) someMethod: (NSObject<Foo> *) arg;