2009-05-25 7 views
2

UiScorllView에 서브 뷰를 실시간으로 (메모리 절약을 위해) 동적으로 추가하려고합니다.부드럽게 UiScrollView에 하위 뷰 추가하기

이렇게하면 스크롤보기가 잠깐 멈추게됩니다.이 문제를 해결하려면 어떻게해야합니까?

힌트는 UITableView이 문제를 해결하는 방법을 읽기 최대

답변

3

감사. 가장 큰 성능은 하위 뷰의 할당 및 초기 드로잉이지만 주로 할당입니다. UITableView s는 재사용 식별자와 메모리 힙을 사용하여 스크롤하는 동안 모든 셀을 메모리에 유지하므로 새 셀을 볼 수있는 영역으로 스크롤 할 때마다 새 셀을 다시 할당하는 대신 이미 할당 된 셀을 다시 사용할 수 있습니다.

아마도 자신의 서브 뷰 재사용 시스템을 구현하여 할당 시간을 모두 절약 할 수 있습니다. 다시 말하지만, 구체적으로는 UITableView이 그것을 어떻게 수행하고 그것을 모델링했는지 읽어보십시오. 불행히도, 내가 생각할 수있는 것보다 쉬운 해결책은 없습니다.

2

사용자 인터페이스를 중단시킬 수있는 모든 작업은 스레드에 배치해야합니다. 이렇게하면 하위보기를 추가하는 프로세스가 백그라운드에서 수행되어 주 스레드를 방해하지 않습니다.

NSThread으로 수행하거나 NSOperationQueue을 구현할 수 있습니다.

NSThread의 선언은 간단합니다. 'myFunction이이'(또는 단순히 상태 self 현재 클래스가 스레드를 처리하는 경우) 'argumentObject은'해야하는 함수, 객체와 '인 myObject'의 이름으로 바꿔야합니다

[NSThread detachNewThreadSelector:@selector(myFunction:) toTarget:myObject withObject:argumentObject]; 

인수로 전달하려는 객체로 대체됩니다. 이것은 nil

일 수 있습니다. 기능 자체는 다음과 같아야합니다.

-(void)myFunction { 
    NSAutoReleasePool *pool = [[NSAutoReleasePool alloc] init]; 
    // do your thing here... 
    [pool release]; 
} 

모든 스레드에는 자동 복구 풀이 있어야합니다.

하나의 힌트; 하위 뷰의 애니메이션을 적용하려면 UIAnimation 블록을 지정하십시오.

관련 문제