Objective-c 的 内存管理和@property strong,weak,assign,copy,retain等关键字介绍

这篇博客介绍了Objective-C的内存管理机制,包括引用计数原则和对象生命周期。详细阐述了@property中strong, weak, assign, copy, retain等关键字的含义和应用场景,特别是retain、release、retainCount的实现原理。还提到了点语法、内存分布以及assign、weak、copy、nonatomic和__block等关键字的作用和区别。" 107938414,9393772,五节点Hadoop-2.6.0-cdh5.14.2 HA集群详细部署教程,"['Hadoop', '集群', '高可用', 'Zookeeper']
摘要由CSDN通过智能技术生成

@property strong,weak,assign,copy,retain等关键字

内存管理

众所周知ios的内存管理是基于引用计数的。

  • 当对象被创建(通过alloc、new或copy等方法)时,其引用计数初始值为1
  • 給对象发送retain消息,其引用计数加1
  • 給对象发送release消息,其引用计数减1
  • 当对象引用计数归0时,ObjC給对象发送dealloc消息销毁对象

注意:

  1. 通过alloc、new或copy等方法引用计数初始值为1。而其他方法比如[NSMutaleArray array]返回时会自动加入autoreleasepool,arc中如果有强引用指向它,其引用计数为2.非arc时一般需要retain 一下,才能持有对象。
  2. alloc和new 的主要区别功能上几乎是一致的。new会默认使用init的初始化方法。其次只在于alloc分配内存的时候使用了zone,这个zone是个什么东东呢?它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的代价,提升了程序处理速度。
retain、release、retainCount 的实现

这三个参数是 __CFDoExternRefOperation(uintptr_t op,id obj)接口实现。这个接口首先会通过obj的地址作为键值。找到其引用计数的散列表。然后根据op的类型分别进行这三种操作。

@property介绍

OC意识到当getter方法和sette

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值