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

内存管理概念
对象在内存中使用玩之后
拿iphone 4;来说 512M内存
什么时候创建,什么时候回收


创建对象的时候retainCount = 1;只读的;引用计数器;记录有多少人用这个类,retainCount就是几;
如果没人用的时候retainCount就变成0了,如果变成0了,那么系统就回收
[p replease]通知系统减1
[p retain]给对象发送一个retain消息加1,一定是在引用计数器不为0的情况下加1

int a =10;
Person * p = [[Person alloc] init];
[p retain];//引用计数+1 并且一定要在引用计数不为0的时候
//1
[p release];
//0
[p release];
一旦调用了delloc方法,就立刻销毁
当我们的引用计数指针为0的时候,我们的person对象被销毁了之后,再去用对象的指针调用方法,就会崩溃
使用已经被释放调用对象的指针操作对象的任何方法都会出现野指针错误
为了防止野指针错误
指针释放完毕时候把指针清零


p.age = 10;//[p setAge:10]
p = nil;//0


清零之后这个对象就没有了地址,当给一个为空的指针发送消息,就不会引发错误的,java跟c#的同学们注意一下


[nil reslese];在oc
僵尸对象




应用程序就是个死循环
1.当引用计数器为零的时候,会调用dealloc方法,通知对象将被销毁
2.调用对象的retain 方法会使对象引用计数+1,并且返回一个id,就是对象本身
3.调用对象的release 方法,会使对象的引用计数-1
4.指向了已经被释放掉的对象的指针成为野指针
5.使用野指针操作对象,会导致程序崩溃(野指针并不是空指针)
6.oc中没有空指针异常,给一个为空的指针(nil,NULL,0)发送消息,不会产生异常
7.如果一个对象你已经确定释放掉它了,那么最好给我赋值为nil。防止下面出现野指针的错误
8.dealloc方法中一定要调用[super dealloc],通知父类释放与当前相关属性
//配对概念,当你在同一个文件中使用alloc,new创建对象的时候,就一定要与之对应一个release
int main()
{
   Student *s = [[Student alloc] init];
//s-0


   [s release];//创建对象就一定要加一个


   
}
聚合关系 = 组合关系
1.





















































































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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值