首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

IOS内存储器管理续

2013-09-05 
IOS内存管理续NSObject是IOS所有类的基类有两个基本函数,alloc和deallocalloc类于C的new,dealloc类于delet

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


热点排行