格式:@property (attribute [, attribute2, ...]) type name;
读写性:
- readwrite 可读可写,默认属性
- readonly 只读,该属性只生成getter方法而不生成setter方法
语义:
- strong 强引用关系,拥有对象
- weak 弱引用关系,如果目标对象被销毁,该引用被设为nil
- copy 旧对象调用release,新对象调用copy,然后赋值
- assign 只是获得了对象,并没有调用retain,也不会调用release,默认属性
- retain 就对象调用release,新对象调用retain,然后赋值
设为retain时,访问器set和get都会让对象计数器+1。get方法同时做了autorelease,当拥有者销毁的时候,get执行了m次,m个自动释放池也会销毁,对象的引用计数会m次自动-1,在dealloc中还要释放对象,则让对象与自己完全无关,等于说把控制权交了出去。
原子性:
- nonatomic setter方法不是原子性的,可以提升性能。默认是原子性的,但没有提供atomic关键字