2013-03-30 3 views
0

NSMutableArray가 있습니다.NSMutableArray에서 UIControls 관리

UIControl (UISlider라고 함)을 작성하고이를 for 루프의이 배열에 추가합니다.

for (int i=0; i<totalSlider; i++) { 

UISlider *tmpSlider = [[UISlider alloc] initWithRect:CGRect(0,0,200,40)]; 

[myArray addObject: tmpSlider]; 

} 

괜찮습니다. 나는

UISlider *tmpSlider = [myArray objectAtIndex:j]; 

하여 참조 할 수 있어요하지만 해당 배열의 나머지 슬라이더를 유지하면서 어떻게 제거하고 이러한 개체를 개별적으로 해제?

예를 들어,이 배열에는 10 개의 슬라이더가 있습니다. 색인 5에서 슬라이더를 제거하고 싶습니다. 어떻게해야합니까? 감사합니다. .

답변

3

우선, 모든 UISlider를 스택의 맨 위에 만들어야합니다. 당신의 좌표로

CGRect(0,0,200,40)]; 그래서 당신은 단지 그들 중 하나를 볼 수있을 것 같습니다. Jed's answer에서

추출물 :

지금 당신은 그들 중 하나가 단순히

[myArray removeObjectAtIndex:5]; 

편집을 사용하여 제거 할 경우.

NSArray와 마찬가지로 NSMutableArray의 인스턴스는 해당 내용에 강한 참조 을 유지 관리합니다. 가비지 수집을 사용하지 않으면 개체를 배열에 추가 할 때 개체에 보존 메시지가 수신됩니다. 개체가 가변적 인 배열에서 제거되면 릴리스 메시지를받습니다. 개체에 대한 더 이상의 참조가 없으면 개체가 할당이 해제되었음을 의미합니다. 프로그램에서 이러한 객체에 대한 참조를 유지하는 경우 객체가 배열에서 제거되기 전에 객체에 보관 메시지를 보내지 않으면 참조가 유효하지 않습니다.

+0

아니요, 제 슬라이더는 스택되지 않습니다. 왜냐하면 중심점을 적절히 설정하는 코드가 있기 때문입니다. 어쨌든, [[myArray objectAtIndex : j] release]; ? – GeneCode

+0

이 출시 되나요? MRC를 사용하고 있습니까? –

+0

@Rocotilos : 내 편집을 확인하십시오. –