开始学习ios的时候,就对一些objc的语法不理解,就比如@property和@synthesize,之前都是记住然后照着用,但是写的代码多了,对objc和ios有了一些理解,再加上最近用MRC,所以在各种内存检测和变量使用的过程中,探讨了一下,最终对它们的作用有了一定了解。
一般@property和@synthesize是搭配使用的,用@property声明的变量,系统默认给他们做了setter和getter处理。
property可以声明属性的各种属性。
1.声明属性的访问方法:
- getter=getterName
- setter=setterName
声明访问属性的设置与获取方法名。
2.声明属性写操作权限:
- readwrite
声明此属性为读写属性,即可以访问设置方法(setter),也可以访问获取方法(getter),与readonly互斥。 - readonly
声明此属性为只读属性,只能访问此属性对应的获取方法(getter),与readwrite互斥。
3.声明写方法的实现
4.访问方法的原子性
关于原子性,大家可以查一下操作系统的原子性操作。
@synthesize 中可以定义 与变量名不相同的getter和setter的命名,籍此来保护变量不会被不恰当的访问。
功能:让编译好器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。