关于内存方面,retain,copy,assign

发布时间:2020-07-31 19:11:25 作者:lulun426
来源:网络 阅读:505

 

内存管理机制

 引用计数:因为OC中不存在垃圾回收机制,所以才根据引用计数回收机制。当引用计数为0时,销毁空间。也就是说,根据引用计数来确定一个对象是否释放

  可以改变引用计数的操作:allco retain release copy dealloc 

 便利构造器

自动释放池:

 每次对象调用autorelease 方法时(obj-c中的正式说法应该是:给对象发送autorelease消息),对象的引用计数并不是真正变化,而是向pool中添加一条记录,记下对象的这种要求。最后当pool发送drain 或者 release 消息时,池中的所有对象的这种要求一一被执行(即:pool被销毁前,会通知池中的所有对象,全部发送release 消息真正将引用计数减少,如果对象之前没有发送过autorelease 消息)

   retain:引用计数+1 操作,获取对象的所有权,与release 对应。

   线程:注意当视图退出时,需要关闭自己所开线程


   alloc : 开辟空间,引用计数有0变为1,dealloc :销毁空间 手动调用dealloc 时候会强制将引用计数置为0;

   copy:将源数据重新复制一份,原数据引用计数不变,拷贝的一份引用计数+1;复制一个对象,并且存储在不同的内存区,原对象的引用计数不变。遵循NSCoping 协议的可以深拷贝。

   assign :×××或者其他常量的引用计数。不发生改变

   在ARC模式下,strong 与retain相似,strong,用于ARC模式下,表明对象属于强引用,类似retain ,但是比retain更加安全,只要对象存在拥有者,就可以引用,不会被释放,只要对象失去拥有者,立即被抛弃,不必再将已经指向已经释放的对象的指针指向空。避免了野指针。

    weak 类似assign ,弱引用,引用计数不会增加。释放指针自动置为nil

   在ARC模式下,weak 与 assign 相似,

    readwrite:读写,既有setter 和 getter 

    readonly:只有读操作,即只有getter

    nonatomic :非原子特性,不保证多线程下保护安全

    atomic:原子特性,保证多线程下安全,有一个属性需要对个线程同时访问一个变量,使用atomic 能够自动枷锁解锁。

     

推荐阅读:
  1. Cocos2d-x 注意隐藏的retain 内存管理
  2. ios assign、copy 、retain

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

空间 记录 垃圾回收

上一篇:yarn和hdfs

下一篇:spring cloud(一):微服务架构开篇

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》