首页 > 其他 > 详细

内存管理(注意事项和重点)

时间:2014-02-21 15:23:48      阅读:295      评论:0      收藏:0      [点我收藏+]

手动管理:MRC(manual reference counting)(人工应用计数).
.anto自管理.
alloc开辟空间
dealloc是回收空间
release释放自己空间也就是释放自己拥有的所有全.
内存分配存在在的三大问题:1.野指针.2.过度释放.3.内存泄漏
光灯原理:开辟一个空间即计数器自动+1,
遛狗原理:
房产原理.(使用权,与所有权)
@autoreleasepool {                             //面试题:        for (NSInteger i = 0; i<10; i++) {            @autoreleasepool {            Person * per1 = [[Person alloc]initWithName:@"memgmemg" sex:@"M" age:12];            [per1 retain];            [per1 autorelease];                   return 0;  }
  Person *p = [[Person alloc]initWithName:@"lili" sex:@"m" age:30];[p retain];[p retain];[p release];release]; p = nil;//把对象清为空防止出现野指针.   release];//多次释放时,释放release次数超过retain相加次数,则release释放的不属于自己的内存空间,在该内存中,在内存已经被释放完毕.称为野指针(也就是释放不属于自己空间,)
过度释放会导致程序立即崩溃.
 Person *p = [[Person alloc]initWithName:@"lili" sex:@"m" age:30];[p retain];[p retain];[p retain];[p retain]; //p = @"lisi" (此代码为重指向) 常量区引用计数味无穷大,无法释放.//常量区内容需要释放,只有在堆区才会被释放.
[p autorelease] //autorelease 延迟释放,被声明为autorelease的对象会被放进离他最近的自动释放池@NSAutorelease {   }中.],当自动释放池自动销毁才会给池中每个对象发送release消息-1.
retain拥有对象所有权即计数器加+1.
release释放的是自己拥有的东西,只能释放自己的所有权不能释放别人东西               }

本文出自 “8464349” 博客,转载请与作者联系!

内存管理(注意事项和重点)

原文:http://8474349.blog.51cto.com/8464349/1361391

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!