ios中属性修饰符

  • copy
  • retain
  • strong
  • weak
    weak 只可以修饰对象。如果修饰基本数据类型,编译器会报错-“Property with ‘weak’ attribute must be of object type”
  • assign
    可修饰对象,和基本数据类型。当需要修饰对象类型时,MRC时代使用unsafe_unretained。
  • unsafe_unretained
    __unsafe_unretained和__weak一样,表示的是对象的一种弱引用关系,唯一的区别是:_weak修饰的对象被释放后,指向对象的指针会置空,也就是指向nil,不会产生野指针;而__unsafe_unretained修饰的对象被释放后,指针不会置空,而是变成一个野指针,那么此时如果访问这个对象的话,程序就会Crash,抛出BAD_ACCESS的异常 unsafe_unretained也可能产生野指针,所以它名字是"unsafe” 当你明确对象的生命周期的时候,可以使用__unsafe_unretained替代__weak,可以稍微提高一些性能,虽然这点性能微乎其微。
  • readwrite/readonly (读写策略、访问权限)
  • nonatomic/atomic (安全策略)