Objective-C有一条便捷途径,可以简化存取方法的过程。该途径称为属性(properties)。通过属性,可以简化代码。
声明属性(Declaring properties)
在BNRPerson.h中删除实例变量,然后用下面两个属性heightInMeters和weightInKilos重写存取方法的声明,代码如下:
属性的声明以@property开始,然后是属性的类型和名称。请暂时忽略代码中的(nonatomic)。它是属性的特性,将在后面的内容中介绍。
声明属性会让头文件更简洁,声明属性可以帮你减少很多的代码输入。但是,除此之外,它还有其他好处。声明属性的时候,编译器不仅会帮你声明存取方法,还会根据属性的声明实现存取方法。
也就是在BNRPerson.m实现文件中,你不再需要为存取方法写实现代码。
有时候一个类需要只读(readonly)属性,也就是说,该属性的值只能够读取,不能改写。这样的属性需要拥有取方法但是不能有存方法。通过在属性特性处添加一个readonly,可以指导编译器只创建一个取方法,如下所示:
@property(nonatomic,readonly)double humanPouplation;
这样编译器就会创建一个hunmanPouplation取方法但不会创建一个setHunmanPouplation:存方法。
而本书读/写属性是默认的,所以不需要另外在属性特性中声明:
@property(nonatomic)double humanPouplation;=@property(nonatomic,readwrite)double humanPouplation;
用点号调用存取方法(dot notation)