특정 버튼을 탭했을 때 호출되는 다음과 같은 액션 메서드가 있다고 가정해 보자 :
- (IBAction)buttonTouched:(NSObject *)sender { performindex = 0; [self performSelector:@selector(testMethod1) withObject:nil afterDelay:0.2f]; [self performSelectorInBackground:@selector(testMethod2) withObject:nil]; NSLog(@"buttonTouched out, runloop : %x", [NSRunLoop currentRunLoop]); } - (void)testMethod1 { NSLog(@"testMethod1 in, runloop : %x", [NSRunLoop currentRunLoop]); [NSThread sleepForTimeInterval:0.1f]; NSLog(@"testMethod1 out"); } - (void)testMethod2 { NSLog(@"testMethod2 in, runloop : %x", [NSRunLoop currentRunLoop]); [NSThread sleepForTimeInterval:0.1f]; NSLog(@"testMethod2 out"); }
위 코드는 다음과 같은 결과를 보여준다 :
2011-04-30 17:16:48.458 Test[2741:207] buttonTouched out, runloop : 4b36a80
2011-04-30 17:16:48.458 Test[2741:6a03] testMethod2 in, runloop : 4b398d0
2011-04-30 17:16:48.564 Test[2741:6a03] testMethod2 out
2011-04-30 17:16:48.658 Test[2741:207] testMethod1 in, runloop : 4b36a80
2011-04-30 17:16:48.759 Test[2741:207] testMethod1 out
특정 메서드를 UI 런루프 외의 다른 런루프(다시 말하면 별도의 백그라운드 스레드)에서 실행하고 싶다면, 위와 같이 간단하게 performSelectorInBackground를 사용하는 방법을 생각해 볼 수 있다.
'TechLog' 카테고리의 다른 글
WP7 에뮬레이터에서 멀티터치 입력 장치 테스트하기 (0) | 2011.05.04 |
---|---|
계산기 앱으로 들여다본 iOS, 안드로이드, WP7 앱의 UI (2) | 2011.05.04 |
UISplitViewController에 UITabBarController를 추가하기 (0) | 2011.05.02 |
한글판 Visual Studio 2010에서 Windows Phone 7 프로젝트 템플릿이 등록되지 않을 경우 (1) | 2011.04.16 |
부트캠프로 설치한 Windows 7에서 윈도 업데이트 후 블루 스크린 해결 (18) | 2011.04.14 |