"할당"으로 설정된 콘센트를 출시 할 필요가없는 이유는 무엇입니까?
@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 변수의 소유권을 주장하지 않습니다. 왜냐하면 그것은 "retain"속성이 아니기 때문입니다. 단지 그것을 가져 와서 인스턴스 변수에 할당합니다. 따라서 소유권 정책을 고려할 때 -dealloc에 anView 인스턴스 변수를 공개 할 필요가 없습니다. 개체가 소유하지 않습니다. 그게 맞습니까?
감사합니다. a.f.a.i.k 아이폰 OS에는 GC가 없다 ... 3.0에 대해서는 모르지만 이전 버전에서는 참고 계산 만하고있다. – Thanks