//
// Dog.h
// OC基础学习
//
// Created by 麦子 on 15/4/22.
// Copyright (c) 2015年 麦子. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Dog : NSObject
@end
//
// Dog.m
// OC基础学习
//
// Created by 麦子 on 15/4/22.
// Copyright (c) 2015年 麦子. All rights reserved.
//
#import "Dog.h"
@implementation Dog
-(void)dealloc
{
NSLog(@"对象完全销毁了");
[super dealloc];
};
@end
/******************引用技术************************/
Dog *dog = [[Dog alloc] init];
NSUInteger count = [dog retainCount]; // 创建出来后,就有了一个绳子栓住了它。
NSLog(@"%ld",count);
Dog *dogTwo = dog;
NSLog(@"---%ld",[dog retainCount]); // 这种变量的引用还是 只有一条绳子。
[dog retain];// 引用计数会加1.
NSLog(@"%ld",[dog retainCount]);
NSLog(@"----%ld",[dogTwo retainCount]); // 都变成2了。
[dog release]; //变成1了,
NSLog(@"-----%ld",[dog retainCount]);
[dog release]; // 当引用计数为0的时候,就会自动去调用dealloc方法。
NSLog(@"%ld",[dog retainCount]); // 调用dealloc后,这个值还是1, 理由就是,调用后,不回马上释放掉内存。 如下,直接打印100循环,就会在中间报错。
// for (int i = 0; i<100; i++) {
// NSLog(@"%lu", [dog retainCount]); // 报错。
// };
2015-04-22 20:40:52.891 OC基础学习[1164:46270] 1
2015-04-22 20:40:52.892 OC基础学习[1164:46270] ---1
2015-04-22 20:40:52.892 OC基础学习[1164:46270] 2
2015-04-22 20:40:52.892 OC基础学习[1164:46270] ----2
2015-04-22 20:40:52.892 OC基础学习[1164:46270] -----1
2015-04-22 20:40:52.893 OC基础学习[1164:46270] 对象完全销毁了
2015-04-22 20:40:52.893 OC基础学习[1164:46270] 1
Program ended with exit code: 0