@property
1.Assign
簡單賦值,不更改引用計(jì)數(shù)
(例如NSInteger,CGFloat)和C數(shù)據(jù)類型(int,float, double, char,等)
適用簡單數(shù)據(jù)類型
對應(yīng)內(nèi)部get和set實(shí)現(xiàn)(arc):
- (void)setName:(NSString *)name{
_name = name;
}
- (NSString *)name{
return _name;
}
2.retain
與strong相對應(yīng),使用了引用計(jì)數(shù),retain+1,release -1;當(dāng)引用計(jì)數(shù)為0時(shí),dealloc會被調(diào)用,內(nèi)存被釋放
- (void)setName:(NSString *)name{
if (_name != name) {
[ _name release];
_name = [name retain];
}
}
- (NSString *)name{
return [[ _name retain] autorelease];
}
3.copy
生成的對象與原對象的關(guān)系是:與原對象內(nèi)容相同內(nèi)存地址不同的新對象
- (void)setName:(NSString *)name{
if (_name != name) {
[ _name release];
_name = [name copy];
}
}
- (NSString *)name{
return [[ _name retain] autorelease];
}
4.atomic
原子屬性:是線程安全的,該屬性下只允許一個(gè)線程訪問該對象,因此會影響運(yùn)行速度;但該屬性下會消耗大量的內(nèi)存。
5.noatomic
非線程安全,允許多個(gè)線程訪問,運(yùn)行速度快
6.strong
強(qiáng)引用:引用并持有對象,當(dāng)不存在引用時(shí),對象才能夠銷毀
7.weak
與assign相對應(yīng),弱引用;當(dāng)引用的對象被釋放后,weak指針指向nil防止野指針。
8,readonly
只有g(shù)et方法,沒有set方法
9,readwrite//默認(rèn)屬性
有g(shù)et/set方法
10,unsafe_unretauined
用在ARC編譯環(huán)境下,在此環(huán)境下,與assign相似。它只是告訴ARC如何正確地調(diào)用聲明為unsafe_unretauined變量的retain和release