2011-09-07 2 views
0

나는 UILabel을 특정 위치에 놓기 위해 궁극적으로 다음 메서드를 호출하는 스레드를 생성하는 매우 간단한 응용 프로그램을 작성하고 있습니다. ARC가 메소드를 닫을 때 레이블을 정리할 것으로 예상했습니다. 내가 틀렸어. :)iOS5에서 어떻게 강제로 출시합니까? 아니면 UILabel로 이것을 할 수있는 더 좋은 방법이 있습니까?

강제로 삭제할 수있는 방법이 있습니까? 아니면 누락 된 부분이 있습니까? 감사! 당신은 ARC (자동 참조 카운팅)를 사용하는 경우

-(void) drawNumberLabel:(NSString *)labelText xloc:(float)xLocation yLoc:(float)yLocation { 

    UILabel *tempLabel; 
    tempLabel = [[UILabel alloc] initWithFrame:CGRectMake(xLocation, yLocation, 27.0, 59.0)]; 
    tempLabel.font = [UIFont fontWithName:@"Helvetica" size:fontSize]; 
    tempLabel.text = labelText; 
    tempLabel.backgroundColor = backgroundColor; 
    tempLabel.textColor = textColor; 
    [self addSubview:tempLabel]; 

} 

답변

0

, 당신은 컴파일러가 컴파일 시간에 당신을 위해이 문을 삽입하기 때문에 모든 메모리 관리가 호출을해서는 안됩니다.

컴파일러에 삽입해야합니다 [tempLabel release];을 컴파일 할 때 메소드 끝에 추가하십시오.

그러나보기에 레이블을 하위보기로 추가 했으므로 포함 된보기에 레이블이 유지되고 해당보기에서 레이블을 제거 할 때까지 레이블이 해제되지 않습니다.

+0

응답 해 주셔서 감사 드리며 동작에 동의합니다. 코드에서 어딘가에 뭔가가 있는지 확인하기 위해 코드의 다른 부분을 살펴볼 것입니다. 내가 뭘 가정했는지 확인해 주셔서 감사합니다 !! – cltfalc

+0

고마워요! 이 문제로 당신을 도우겠습니다. – BigSauce

+0

내가이 문제에 도움이되었다고 생각하면 내 대답에 투표 해 주시겠습니까? 고마워, 행운을 빌어! – BigSauce

1

"라벨 정리하기"란 무엇을 의미합니까? 이 메서드의 끝에서 tempLabel이 할당 해제 될 것이라고 기대합니까? [self addSubview:tempLabel]에 전화하면보기가 레이블을 유지하기 때문에 그렇지 않습니다. 수퍼 뷰가 할당 해제되면 추가 한 레이블도 할당 해제됩니다.