iOS alloc 、retain、release函数

本文介绍了Objective-C中的内存管理机制,包括alloc、retain、release等函数的作用及使用场景,解释了引用计数器的工作原理,并说明了如何正确管理对象生命周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

alloc 函数是创建对象使用,创建完后计数器为1,只用一次
retain是对一个对象的计数器+1,可以调用多次
release是对一个对象计数器-1,减到0对象就会从内存中释放
Objective-C类中实现了引用计数器,对象知道当前被引用的次数
最初对象的计数器是1
如果需要引用对象,可以给对象发送一个retain消息,这样对象计数器就加1
当不需要引用对象了,可以给对象发送release消息,这样对象计数器就减1
当计数器减到0,自动调用对象的dealloc函数,对象就会释放内存
计数器为0的对象不能再使用release和其他方法
如果对一个对象使用了alloc,[mutable]copy,retain,那么你必须使用相应的release或者autorelease

下面三种增加对象计数器

  1. 当明确的使用alloc方法来分配对象。
  2. 当明确地使用copy[WithZone:]或者mutableCopy[WithZone:]来copy对象时。
  3. 当明确使用retain消息。
    上述三种方法使得计数器增加,那么就需要 [auto]release来明确释放对象,也就是递减计数器

属性可以是:

  • readwrite(缺省),readonly表示属性石可读写的,也就是可以使用getter和setter,而readonly只能使用getter
  • assign(缺省),retain,copy表示属性如何存储
  • nonatomic表示不用考虑线程安全
  • getter=…,setter=…重新设置getter函数和setter函数名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值