IOS - @property 属性类型归纳和介绍

1.atomicnonatomic

  • atomic默认,这个属性是为了保证程序在多线程情况,编译器会自动生成互斥加锁代码,避免该变量的读写不同步问题
  • nonatomic:如果该对象无需考虑多线程的情况,请加入这个属性,这样会让编译器少生成互斥加锁代码,可以提高效率。

2.strongweakstrongretain功能相似;weakassign相似,只是当对象消失后weak会自动把指针变为nil;)

  • strong:强引用,其存亡直接决定了所指向对象的存亡。如果不存在指向一个对象的引用,并且此对象不再显示在列表中,则此对象会被从内存中释放。如果一个对象被另一个对象持有强引用就不会被释放。NSMutableArray、NSMutableDictionary、NSMutableString、UIImage等NS、UI开头的oc对象都可以用strong。
  • weak:弱引用,不决定对象的存亡。即使一个对象被其他对象持有无数个弱引用,只要没有强引用指向它,那么还是会被清除。

    只适用与oc对象类型而不是数据类型,通常为用于UI控件。

3.assigncopyretain

  • assign:默认类型,setter方法直接赋值,不进行任何retain操作,不改变引用计数。一般用来处理基本数据类型。适用于oc基本数据类型和c语言数据类型(NSInteger、CGFloat、int、char等)。
  • retain:释放旧的对象(release),将旧对象的值赋给新对象,再令新对象引用计数为1。适用于多数oc对象。
  • copy:将内容的拷贝,向内存申请一块空间,把原来的对象内容赋给它,令其引用计数为1,在赋值时使用传入值的一份拷贝。适用于 NSString、NSData、NSDate、NSNumber、NSValue、NSArray、NSDictionary等。
  •  

猜你喜欢

转载自blog.csdn.net/qq_36557133/article/details/80821135