IOS内存管理续
NSObject是IOS所有类的基类
有两个基本函数,alloc和dealloc
alloc类似于C++的new,dealloc类似于delete
当对象的retaincount为0时,自动调用dealloc函数
release只是使retaincount-1,不是调用dealloc函数
内存管理的原则是谁创建谁释放
在那个地方调用alloc,那个地方一定要使用release
#import <Foundation/Foundation.h>
@interface car:NSObject
@property(nonatomic,retain) NSString *stu;
@property(nonatomic,retain)NSString *name;
-(void)print;
@end
#import "car.h"
@implementation car
-(void)print
{
NSLog(@"the string is %s",[self.name UTF8String]);
}
-(void)setName:(NSString *)name
{
NSLog(@"111");
if (name!=_name)
{
[_name release];
_name=[name retain];
}
}
//-(NSString*)_name
//{
// NSLog(@"222");
//
// return _name;
//}
-(void)dealloc
{
NSLog(@"dealloc");
[_name release];
[super dealloc];
}
@end
main函数:
#import <Foundation/Foundation.h>
#import "car.h"
int main(int argc, const char * argv[])
{
//NSArray *colors=[NSArray arrayWithObjects:@"hello",@"richard",@"yang", nil];
car *obj=[[car alloc] init];
obj.name=@"ios";
[obj print];
car *obj2=[obj retain];
[obj release];
return 0;
}
结果:
2013-08-28 16:45:36.886 OCtest[542:303] 111
2013-08-28 16:45:36.888 OCtest[542:303] the string is ios