您的位置:首页 > 其它

MRC内存管理(四)set、get方法

2016-06-25 18:15 281 查看
续上一篇MRC内存管理(三)

在People文件中

//对于对象的描述,需要用retain
@property (retain,nonatomic)NSArray *array;

//对于字符串的描述,要用copy
@property (copy,nonatomic)NSString *name;

//对于基本类型的描述,要用assign
@property (assign,nonatomic)NSInteger age;

- (void)dealloc{
[_array release];
//打点调用时,如果property描述的是retain(copy),那么set方法会对之前指向的对象release一次,然后对新指向的对象retain(copy)一次。
self.name = nil;
[super dealloc];
}

- (void)setArray:(NSArray *)array{
if (_array!=array) {
//对于对象的set方法,需要先对之前指向的对象release一次,然后对新指向的对象retain一次。
[_array release];
_array = [array retain];
//        _array = array;
//        [_array retain];
}
//    _array = array;
//    [_array retain];

}

- (NSArray *)array{
return _array;
}


在ViewController文件中

- (void)viewDidLoad {
[super viewDidLoad];
_p = [[People alloc] init];
NSArray *array = [[NSArray alloc] initWithObjects:@"123",@"333", nil];
//[_p setArray:array];
_p.array = array;

NSArray *arr2 = [[NSArray alloc] initWithObjects:@"123",@"432", nil];
[_p setArray:arr2];
[arr2 release];
[array release];
}

- (IBAction)buttonClick:(UIButton *)sender {
NSLog(@"%@",[_p array]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: