如何在Objective-C中定义具有属性的协议?
我试图强制协议的所有实现者实现只读属性。这是我的尝试:如何在Objective-C中定义具有属性的协议?,objective-c,Objective C,我试图强制协议的所有实现者实现只读属性。这是我的尝试: @protocol Foo @property(readonly) BOOL isPending; @end @interface Bar <Foo> @end @implementation Bar - (BOOL) isPending { return NO; } @end @protocolfoo @属性(只读)BOOL显示; @结束 @接口条 @结束 @实现栏 -(BOOL)isPending{ 返回否;
@protocol Foo
@property(readonly) BOOL isPending;
@end
@interface Bar <Foo>
@end
@implementation Bar
- (BOOL) isPending {
return NO;
}
@end
@protocolfoo
@属性(只读)BOOL显示;
@结束
@接口条
@结束
@实现栏
-(BOOL)isPending{
返回否;
}
@结束
为什么协议文件中会出现警告
属性“isPending”要求定义方法“isPending”
这是一个协议!协议不应该实现这些功能!实现协议的类应该实现函数,这正是我所做的 我无法重现您在Xcode 4.3.2下报告的问题。您是否可能声明了要实现
Foo
的内容,但忽略了为isPending
添加getter?诊断方法可能是将-(BOOL)isPending
添加到协议中以代替@属性
,并查看是否有任何差异。即使使用完全声明的getter和setter,您仍然可以使用点语法,因此它不会对程序的任何其他部分造成语法上的差异。+1您是否可能声明了实现Foo的内容,但忽略了为isPending向其添加getter
@Paul。警告发生在协议中,而不是Foo。Foo确实有一个用于isPending的getter代码>