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