@property、@synthesize关键字和点语法

来源:互联网 发布:优化交通组织工作 编辑:程序博客网 时间:2024/06/05 21:05

在面向对象编程的时候,我们常会为对象的一些属性写上set、get方法(设置器和访问器),而不直接访问成员变量,这样一来提升了安全性(不太懂),二来可以在设置和访问的时候加上判断,过滤不符合条件的值。
当属性比较多的时候,为每个属性写设置器和访问器方法比较繁琐,可用@property、@synthesize简化设置器和访问器,在程序运行时动态生成get和set方法。


OC中的点语法与Java不太一样,本质是进行了方法的调用,并不是直接为成员变量赋值。
OC中get有特殊含义,因此访问器不用get命名。
<span style="font-family:Microsoft YaHei;font-size:14px;">stu.age = 20;  //等价于 [stu setAge:20];int age = stu.age;  //等价于 int age = [stu age];</span>
访问成员变量使用的是“->”而不是“.”,例如stu->age。

点语法+self容易产生的坑:
<span style="font-family:Microsoft YaHei;font-size:14px;">- (void)setAge:(int)newAge {self.age = newAge;  //等价于 [stlf setAge:newAge];}</span>
熟悉Java的同学会这样写,就产生了死循环。为了区分点语法和成员变量访问,一般成员变量会以下划线_开头,如_age。


0 0