本帖最后由 tz19900926 于 2015-9-25 14:41 编辑
- <span style="line-height: 2.2em;">@implementation Person //在person.m文件中重新定义dealloc方法</span>
复制代码- - (void)dealloc
- {NSLog(@"dealloc finish"); //当系统向对象发送dealloc方法时打印此句
- [super dealloc];}
- @end
- int main(int argc, const char * argv[]) { //在main函数中,生成和销毁对象内存空间
- @autoreleasepool {
- Person *p1 = [Person new]; //创建一个对象 此时retaincount =1;
- [p1 retain]; //retain用来增加对象的引用计数器的值(+1)
- NSLog(@"%lu",p1.retainCount);
- [p1 release]; //release用来减少对象的引用计数器的值(-1)
- NSLog(@"%lu",p1.retainCount);
复制代码分享一下学到的 oc内存管理中主要管理的是堆区,当我们用过的对象不再需要使用时我们应该将对象的空间释放; 每个对象都有一个引用计数器(retainCount)来记录被引用的个数,当他等于值等于0时系统就会发送dealloc消息给这个对象,就会释放对象的空间 此节中学到了 retain 是让对象的引用计数器+1 releas 让对象的引用计数器 -1 retainCount 的值是对象的被引用个数 我们可以通过重定义dealloc方法来验证对象有没有被释放,在类的.m文件中编写 (void)dealloc
{NSLog(@"dealloc finish"); //当系统向对象发送dealloc方法时打印此句,当我们在main函数中将引用计数器变为0时便可验证系统有没有给对象发送此消息
[super dealloc];}
|