아래 코드를 살펴보고 최선의 방법을 제안하십시오. 나는 그 코드가 정확한지를 확실히 말할 수 없다. 배열에 객체를 추가 할 때 보유 수를 얻나요? 두 번째 함수에서 로컬 변수 "mySubview"또는 원래 객체를 릴리스합니까?배열에 저장된 객체를 해제하는 방법은 무엇입니까?
// this is a class property
myArray = [[NSMutableArray alloc] init];
- (void)createSubview
{
UIView *mySubview = [[UIView alloc] init];
[self addSubview:mySubview];
[myArray addObject:mySubview];
}
-(void)eventHandler:(NSNotification *) notification
{
UIView *mySubview = [notification object];
[myArray removeObjectIdenticalTo:mySubview];
[mySubview removeFromSuperview];
[mySubview release];
}
완벽 함, 내가 분명히해야 할 필요가있는 것입니다. 따라서 두 번째 함수에서 마지막 두 줄은 참조 횟수를 0으로 줄이고 원래 인스턴스는 메모리에서 해제됩니다. 맞습니까? – anna
어쩌면 0으로 줄이고 그렇지 않을 수도 있습니다. 걱정할 필요가 없습니다. 걱정할 필요가있는 것은 모든 보유 (및 함축 된 보유)가 릴리스별로 균형을 유지하는지 확인하는 것입니다. 객체 또는 프레임 워크가 내부적으로 수행 할 수있는 것은 사용자가 제어 할 수없는 구현 세부 사항입니다. 나는. 보유 수는 델타에 불과하며 절대로 절대적이지 않습니다. 이 경우 모든 것이 균형을 이루기 때문에 코드가 정확합니다. – bbum
아, 알겠습니다. 고맙습니다. – anna