黑马程序员----内存管理

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
**

引用计数器

**
4字节

每一个对象都有一个引用计数器
1.当一个对象的引用计数器为0时,对象占用的内存就会被系统回收
2.对计数器的操作
给对象发送一条retain消息,可以使引用计数器+1
发送release消息,计数器-1
发送retainCount消息,获得当前计数器值
对象的销毁
1.当对象被销毁时,系统会自动发一条dealloc消息给对象。
2.一般会重写dealloc对象,释放相关资源
- (void)dealloc
{
//……….释放对象占有的资源
[super dealloc];
}

野指针

1.指向不可用的对象
经典错误:Thread 1: EXC_BAD_ACCESS
2.OC中没有空指针错误
[nil release] 不报错
3.内存操作规范
如果想使用某对象,就应该让他的引用计数器加1
如果不想使用了,就应该调用release 计数器-1
谁retain 谁release
谁alloc 谁release

dealloc

dealloc是在被调用release之后,主要为了释放本对象而做的事。对占用的对象发送release消息,非对象成员会被系统自动回收。

autorelease 必须关闭ARC

OC提供@autorelease{
………..
}
只要把代码放在里面,再在对象创建时就调用autorelease方法,autorelease块之后就会自动调用release方法。
autorelease可以多重叠加,autorelease也是一个类。

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc ] init];
    Person * p = [[[Person alloc] init] autorelease];
    [pool drain];
    @autoreleasepool {
        Person * p = [[[Person alloc] init] autorelease];
        }

ARC

开了ARC,怎么写都是对的,详情必须看接口@property所带的参数了,如果是stong 属性指向的对象,和retain一样.

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值