如果我有这样的东西,我一直在阅读:
@property (nonatomic, assign) UIView *anView;
那我就不用关心内存管理了。我不必在 -dealloc 方法中执行 [anView release]。
为什么?
“assign”只是告诉编译器:“嘿伙计,这个属性不会保留任何人分配给它的任何东西”。然后你可以做
@synchronize anView;
并且编译器神奇地创建了一个getter和setter,其中setter可能看起来像这样:
- (UIView*) anView {
return anView;
}
Setter 可能看起来像:
- (void) setAnView:(UIView*)newAnView {
anView = newAnView;
}
正确错误?如果这是正确的,setter 不会声明 newAnView 变量的所有权,因为它不是“保留”属性。它只是接受它并将其分配给实例变量。所以在考虑所有权策略时,不需要释放-dealloc中的anView实例变量。该对象不拥有它。那是正确的吗?