内存管理:
#import <Foundation/Foundation.h>
/*
野指针:指向僵尸对象(不可用内存,此时已经回收了对象)的指针
EXC_BAD_ACCESS:访问了一块坏的内存(已经被回收)————野指针错误
方法的基本使用
1.retain:计数器+1,会返回对象本身
2.release:计数器-1,没有返回值
3.retainCount:获取当前的计数器数值
4.dealloc
*当一个对象要被回收的时候,就会调用
*一定要调用[super dealloc],这句调用要放在最后面
概念
1.僵尸对象:所占用内存已经被回收的对象,僵尸对象不能再使用
2.野指针:指向僵尸对象(不可用内存)的指针,给野指针发送消息会报错(EXC_BAD_ACCESS)
3.空指针:没有指向任何东西的指针(存储的东西是nil、NULL、0),给空指针发送消息不会报错
*/
@interface Person :NSObject
@end
@implementation Person
-(void)dealloc{
NSLog(@"Person被调用");
//super的dealloc一定要调用,而且放在最后面
[superdealloc];
}
@end
int main()
{
//如果使用了alloc,则之后一定要使用release
Person* p = [[Personalloc] init];
NSUInteger c = [p retainCount];
NSLog(@"计数器:%ld",c);
//计数器+1=2
[p retain];//retain返回的是对象本身
//计数器-1=1
[prelease];
//计数器-1=0
[p release];//此时会调用dealloc方法
//野指针错误
[prelease];
p=nil;
//但是程序不会报错,OC中不存在空指针错误,给空指针发消息,不报错
[prelease];
return 0;
}