给定
@protocol Person<NSObject>
@interface Greek : NSObject <Person>
你能定义一个方法吗
+(id<Person>)newGreek{
return [[Greek alloc] init];
}
并将返回类型用作
id<Person> person = [Persons newGreek];
或者调用方法
Greek *greek = [[Greek alloc] init];
[self talk:greek];
定义为
-(void)talk:(id<Person>)person
如果没有,有什么替代方案?
最佳答案
是的,你可以。在 Protocols在Objective-C 编程语言中,关于类型检查的部分专门显示了第一种形式,第二种形式也可以工作,即使它没有在该页面上列出。协议(protocol)声明 ( <Person>
) 是一个类型修饰符,可用于任何 Objective-C 对象,这意味着您可以在任何定义对象类型的地方使用它。
关于iphone - 返回/传递引用作为其协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383911/