读书人

IOS内存储器管理续

发布时间: 2013-09-05 16:02:07 作者: rapoo

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


读书人网 >操作系统

热点推荐