iOS如何实现协议的@property

时间:2012-07-31 18:51:26

标签: objective-c ios cocoa

我理解的是协议指定方法名称,并且符合该协议的其他人执行方法。

那么协议中声明的属性呢?实现属性是否意味着实现其setter和getter?

3 个答案:

答案 0 :(得分:9)

属性是一个或两个具有特定签名的方法的奇特名称,Objective-C提供了一种约定,允许您使用备用点.语法调用它们。一个协议声明,例如,一对

之间没有区别
-(int) foo;
-(void)setFoo:(int)_foo;

方法和声明读写属性的协议:

 @property (readwrite) foo;

所以你是绝对正确的,实现一个属性意味着实现一个或两个方法,具体取决于你是实现只读,只写还是读写属性。

答案 1 :(得分:1)

正如其他人所说,你只需要实现getter和/或setter(取决于属性)。

我想补充一点,你可以合成它们:

  

@property(nonatomic,retain)NSObject * foo;

最终会出现:

  

@synthesize foo;

答案 2 :(得分:0)

协议只是确保对象实现一组方法的东西。例如,如果您要将对象用作类的委托,则需要确保它实现了您要调用的方法。这是协议的重点。