2011-01-12 42 views
2

目標C中Java中接口的等價概念是什麼?我想創建一個接口並定義一些公共變量和方法,這些變量和方法將由許多繼承自我的接口的類共享。當任何外部的類想要使用一個子類時,它會得到一個我的接口的引用對象,它將指向正確的子類。實現運行時多態性和繼承

如何在Objective C中實現此目的?

回答

5

Java接口的目標C等價物被稱爲「protocol」。

一個小前奏,也可以發現here,如果你想有一個完整的參考,這是at Apple

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;