首页 > 其他 > 详细

黑马IOS学习总结

时间:2014-03-09 07:16:00      阅读:434      评论:0      收藏:0      [点我收藏+]

1 内存管理

alloc new (mutable)copy 这三者会使计数器+1

retain 返回其调用的对象本身

示例:

Person * p = [[Person alloc] init];    // retainCount 为1 ,p是在栈内存中,其内保存着指向堆内存中开创出来的Person对象地址的值。

[p retain];  // 返回p本身,即可以写成 p = [p retain]  此时retainCount 为2 

[p release]; // 计数器减1 retainCount 为1

[p release]; // 计数器再减1 retainCount 为0 ,将自动调用person对象的 dealloc方法,释放内存。注意,此时,p 中仍然保存着person对象的地址值,但此时,联系已经断开了,堆内存中的person对象已经消除了,称为僵尸对象!p此时也称为野指针!

p.age = 5; // 注意,此处等于调用僵尸对象赋值,可能会不报错。在Xcode中开启内存管理开关(僵尸对象检查机制),就会报错。打开方法:Edit schema --> Diagnostics -->Objective-c Enable Zombie Objects 上打钩

[p release]; // 此时会报错。野指针指向的僵尸对象没法release;

p = nil; // 将 p 这个野指针清空,此时称为 空指针

[p release]; // 此处无错,空指针指向空对象可以release

黑马IOS学习总结,布布扣,bubuko.com

黑马IOS学习总结

原文:http://www.cnblogs.com/appzhang/p/3588169.html

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