years.text = [NSString stringWithFormat:@"%0.1f", theScroller.contentOffset.y];
은 자동 릴리스이므로 명시 적으로 문자열을 릴리스 할 필요가 없습니다.
그러나 속도 저하를 방지하려면 필드 업데이트 빈도를 낮추십시오. 예를 들어, scrollViewDidScroll
이 호출 될 때마다 지금부터 0.1 초 후에 필드를 업데이트하는 타이머를 설정하지만 타이머가 이전 호출에서 이미 실행 중인지는 확인하지 않습니다. 이렇게하면 UI를 업데이트 된 상태로 유지하면서 통화 수를 줄일 수 있습니다.
다음은 사용자가 수행 할 수있는 예입니다. 당신의 스크롤 뷰 위임의 인터페이스 선언에 NSTimer
를 선언 :
NSTimer *timer;
및 방법 : 분명히
- (void)updateYear:(NSTimer*)theTimer
{
timer=nil;
UIScrollView *theScroller=[theTimer userInfo];
years.text=[NSString stringWithFormat:@"%0.1f", theScroller.contentOffset.y];
}
- (void)scrollViewDidScroll:(UIScrollView *)theScroller
{
if (!timer) {
timer=[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateYear:) userInfo:theScroller repeats:NO];
}
}
을, 당신은 시간 간격으로 0.1
을 사용할 필요가 없습니다, 당신은 그것을 만드는 시도 할 수 있습니다 더 빠르거나 느리며 가장 잘 작동하는 것을보십시오.
이 예제는 메모리 관리와 관련하여 완전하므로 타이머 개체를 직접 보유하거나 해제해서는 안됩니다. 그것의 수명은 runloop에 의해 내부적으로 처리됩니다.
이것은 문자열을 장면 뒤에 할당하는 편리한 방법 일뿐입니다. 대안이 아닙니다. – Chuck
나는 이제 더 완전한 대답을 추가했다. –
많은 감사, 나는 타이머를 설정하려고합니다. – mtompson