@property
1.Assign
簡單賦值惦费,不更改引用計數(shù)
(例如NSInteger兵迅,CGFloat)和C數(shù)據(jù)類型(int,float, double, char,等)
適用簡單數(shù)據(jù)類型
對應內(nèi)部get和set實現(xiàn)(arc):
- (void)setName:(NSString *)name{
_name = name;
}
- (NSString *)name{
return _name;
}
2.retain
與strong相對應,使用了引用計數(shù)薪贫,retain+1,release -1;當引用計數(shù)為0時恍箭,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
原子屬性:是線程安全的瞧省,該屬性下只允許一個線程訪問該對象扯夭,因此會影響運行速度;但該屬性下會消耗大量的內(nèi)存鞍匾。
5.noatomic
非線程安全交洗,允許多個線程訪問,運行速度快
6.strong
強引用:引用并持有對象橡淑,當不存在引用時构拳,對象才能夠銷毀
7.weak
與assign相對應,弱引用梁棠;當引用的對象被釋放后置森,weak指針指向nil防止野指針。
8掰茶,readonly
只有g(shù)et方法暇藏,沒有set方法
9,readwrite//默認屬性
有g(shù)et/set方法
10,unsafe_unretauined
用在ARC編譯環(huán)境下,在此環(huán)境下濒蒋,與assign相似。它只是告訴ARC如何正確地調(diào)用聲明為unsafe_unretauined變量的retain和release