ios基础修饰符strong weak

  

Copy 其实是建立了一个相同的对象,而 retain 不是:

比如一个 NSString 对象,地址为 0×1111,内容为@”ABC”

Copy 到另外一个 NSString 之 后,地址为 0×2222,内容为@“ABC”,新的对象 retain 为 1, 旧对象没有变化

retain 到另外一个 NSString 之 后,地址为 0x3333 ,内容为 0×1111 ,这个对象的 retain 值+1

assign 地址还是0x1111,内容也还是“ABC”。

也就是说,

assign 是完全拷贝,retain 是指针拷贝,copy 是内容拷贝。

MRC时代常用修饰符具体使用


使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等)  --------有可能造成野指针,程序崩溃,待确定没试过

使用copy: 对NSString

使用retain: 对其他NSObject和其子类

nonatomic关键字:

atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。

在ARC时代常用修饰符

weak和strong的区别:

weak和strong不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它。一旦最后一个strong型指针离去 ,这个对象将被释放,所有剩余的weak型指针都将被清除。


__block和__weak修饰符的区别

__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。

__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。

__block对象可以在block中被重新赋值,__weak不可以。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很多人讲属性修饰词的时候,喜欢从字面或者定义的角度介绍它们间的区别。这篇文章,我们侧重从修饰词对setter方法的...
    小码僧阅读 8,730评论 1 18
  • 一、元组的简介 元组是个有序的序列,其中包含0至多个对象引用,元组是固定的,因此,不能替换或删除其中包含的数据项。...
    zhengjie阅读 2,962评论 0 1
  • 这个世界每天都在变,有些人在追求稳定的生活,有些人也想活的精彩。所谓的稳定,本身或许就是不存在的,因为这世界唯一不...
    爱吃菜的阅读 3,218评论 0 0
  • 不知不觉好像养成了午后写作的习惯,不知道为什么,这个时间段已经成了我的闲暇时光,可以一个人静静地坐在沙发上写些什么...
    十三夕阅读 2,241评论 5 1
  • 日常工作中最常用的被提及最多的设计对象,就是“页面”。 页面上有什么呢?很多的信息,但是这些信息对网站或是APP起...
    Enya年阅读 3,987评论 0 1