iphone - 返回/传递引用作为其协议(protocol)

标签 iphone objective-c ios protocols

给定

@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

如果没有,有什么替代方案?

最佳答案

是的,你可以。在 ProtocolsObjective-C 编程语言中,关于类型检查的部分专门显示了第一种形式,第二种形式也可以工作,即使它没有在该页面上列出。协议(protocol)声明 ( <Person> ) 是一个类型修饰符,可用于任何 Objective-C 对象,这意味着您可以在任何定义对象类型的地方使用它。

关于iphone - 返回/传递引用作为其协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5383911/

相关文章:

iphone - UIView 图层未随 View 调整大小?

ios - 我们可以在 ios 图表中的带有图像的气球标记上添加多个值吗?

iphone - 使用 viewDidUnload 在 iPhone 上进行内存管理

javascript - 在旧 iPad 中,符号 '=>'(在 (key,value) => 中)会引发错误

iphone - UITableViewCell 变换重复反转

ios - 来自 google api 的所有国家和美国各州

iphone - 带有图像和标题的 UISegmentedControl

ios - 如何访问 tableView 的标准 viewForHeaderInSection?

ios - 字符串双重故障排除

iphone - 如何在 iphone 应用程序中创建和管理 session ?