美文网首页
atomic,nonatomic,assign,copy与ret

atomic,nonatomic,assign,copy与ret

作者: 流水点点 | 来源:发表于2016-03-17 14:37 被阅读19次

    atomic:提供多线程安全,原子操作.一种线程保护技术.防止在写未完成的时候被另外一个线程读取,产生数据错误.

    nonatomic:禁止多线程,指定nonatomic,访问器只是简单地返回这个值,如果不指定,那么访问器保留并返回值.

    assign:基本的数据类型int NSInteger bool float ... 直接赋值

    retain:release旧值,在retain新值 指针拷贝 

    copy:为了防止原数据更改影响使用之后的数据->使用copy(拷贝的内容必须遵守拷贝协议)数组字典字符串 内容拷贝

    weak:弱引用 如果还没有人指向它了,它就会被清除内存,同时被指向nil,因为我不能读取不存在的东西。

    strong:表示保留它指向的堆上的内存区域不再指向这块区域了。也就是说我强力指向了一个区域,我们不再指向它的条件只有我们指向nil或者我自己也不在内存上,没有人strong指向我了,weak表示如果还没有人指向它了,它就会被清除内存,同时被指向nil,因为我不能读取不存在的东西。本地变量都是strong,编辑器帮你计算

    alloc 与new的区别:

    1.在实际开发中很少会用到new,一般就是alloc.new和alloc功能几乎是一致的,分配内存并完成初始化.

    new 与alloc之间的区别:

    alloc分配内存的时候使用了[zone] -> 给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域,目的是调用时消耗很少的代价,提升了处理的速度.

    而new的方式只能采用默认的init方法完成初始化,采用alloc 的方式可以用其他定制的初始化方法.

    self与_的区别

    self.programStack等于[self programStack],会走你的懒加载方法,

    相关文章

      网友评论

          本文标题:atomic,nonatomic,assign,copy与ret

          本文链接:https://www.haomeiwen.com/subject/xsxtlttx.html