续上一篇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]);
}