类方法创建的内存管理

Main.m

#import "Person.h"

int main(int argc, const char * argv[])
{

    
    @autoreleasepool
    {
        
        /*
         通过类方法创建的对象已经加入到自动释放池了
         */
        
        Person *person = [Person personWithName:@"Jack"];   //person:1
        //[person autorelease];   不需要  根据黄金法则
        [person showInfo];
        
        //类方法
        
        //NSArray *arrary = [[NSArray alloc] init];
        //[arrary release];
        NSArray *arrary = [NSArray arrayWithObject:person]; //person:2
        
        //NSString *string1 = [NSString stringWithFormat:<#(NSString *), ...#>]
        //NSString *string2 = [NSString stringWithString:<#(NSString *)#>]
        
        //新语法
        NSArray *arrary2 = @[@1,@2,@3];
        //等价于:
        //NSArray *arrary2 = [NSArray arrayWithObjects:@1,@2,@3, nil];
        
        NSNumber *number = @12;
        //等价于:
        //NSNumber *number = [NSNumber numberWithInt:12];
    }
    
    return 0;
}

Person.h

@interface Person : NSObject {

    NSString *_name;
    
}

@property(nonatomic, copy)NSString *name;

//NSArray *arrary = [NSArray arrayWithContentsOfFile:<#(NSString *)#>]
//自定义类方法创建对象
+ (id)personWithName:(NSString *)name;

- (void)showInfo;

Person.m

- (void)dealloc
{
    NSLog(@"person dealloc");
    
    [_name release];
    
    [super dealloc];
}

- (void)showInfo {

    NSLog(@"name:%@",_name);
    
}

//自定义类方法创建对象
+ (id)personWithName:(NSString *)name {

    Person *person = [[Person alloc] init];
    person.name = name;
    
//    [person release];  错误
    
    return [person autorelease];
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值