以MRC为实验
使用属性赋值
@property (retain, nonatomic) User *user;
- (void)viewDidLoad {
[super viewDidLoad];
User *u = [[User alloc] init]; // alloc引用计数默认为1,此时并没人引用它。
self.user = u;
[u release]; // 出变量作用域时,释放掉。
}
// retain的setter方法实现
- (void)setUser:(User *)user {
if (_user != user) {
[_user release];
_user = [user retain]; // 引用计数加1
}
}
使用实例变量赋值
@property (retain, nonatomic) User *user;
- (void)viewDidLoad {
[super viewDidLoad];
User *u = [[User alloc] init]; // alloc引用计数默认为1,此时并没人引用它。
_user = u; // 实例变量赋值引用计数不变,相当于将变量的作用域变成了全局的
}
全局的属性在VC的dealloc中释放。