使用@property可以定义变量的setter和getter方法,再通过@synthesize实现setter和getter方法
使用@proerty时可以选择属性,主要分为以下几类:
1.可读可写性:readonly | readwrite;
这个很容易理解,readonly只定义getter方法而不定义setter方法。
2.setter属性:assign | retain | copy
这几个属性主要用于是生成不同的setter方法。它们的内存管理方式不同。
assign就是简单的赋值(基本数据类型)。
retain就是赋值的时候先release旧值,再retain新值(不能是基本数据类型)。
copy就是把新值的拷贝赋值给旧值。
//retain
- (void)setName:(NSString *)name
{
if (tname != name) {
[tname release];
tname = [name retain];
}
}
//copy
- (void)setCName:(NSString *)cname
{
if (tname != cname) {
tname = [cname copy];
}
}
//assign
- (void)setAName:(NSString *)aname
{
if (tname != aname) {
tname = aname;
}
}
以上代码是我根据属性的含义推测的实际实现方式。
3.原子性:atomatic | nonatomatic
atomatic表示线程安全的,而nonatomatic则不是。
如果不涉及多线程,则最好用nonatomatic,因为atomatic会带来性能上的消耗。
4.引入ARC后,又引入了:strong | weak
strong类似于retain,weak类似于assign
5.setter | getter
定义setter和getter函数的函数名