如何在Objective-C中定义具有属性的协议?

时间:2012-04-07 00:06:22

标签: objective-c

我试图强制协议的所有实现者实现readonly属性。这是我的尝试:

@protocol Foo
@property(readonly) BOOL isPending;
@end

@interface Bar <Foo>
@end

@implementation Bar
- (BOOL) isPending {
    return NO;
}
@end

为什么我在协议文件中收到警告?

  

属性'isPending'需要定义方法'isPending'

这是一个协议!协议不应该实现这些功能!实现协议的类应该实现这些功能,这正是我所做的。

1 个答案:

答案 0 :(得分:1)

我无法重现您在Xcode 4.3.2下报告的问题。您是否有可能宣布要实施Foo但忽略为isPending添加吸气剂?诊断可能是将- (BOOL) isPending添加到协议中以代替@property,并查看是否存在任何差异。即使使用完全声明的getter和setter,你仍然可以使用点语法,因此它不应该与程序的任何其他部分产生语法差异。