2012-10-14 5 views
0

가 나는 아이폰 OS 개발자입니다 작업 및 OS X 용 응용 프로그램을 개발하지 않을. 그러나 그들은 서로 너무 다릅니다.OS X [NSTimer scheduledTimerWithTimeInterval ...] 기능은

나는 응용 프로그램 시작시 시작 화면을 추가 할.

- (void) applicationDidFinishLaunching:(NSNotification *)aNotification { 

// Hide main window 
[self.window orderOut:nil]; 

SplashWindowController *splashWindowController = [[SplashWindowController alloc] initWithWindowNibName:@"SplashWindowController"]; 

[NSApp runModalForWindow:splashWindowController.window]; 
[splashWindowController release]; 

// Show main window 
... 

그리고 여기에 내가 출연 시작을 볼 수 있습니다 "SplashWindowController.m"

- (void)windowDidLoad { 
    [super windowDidLoad]; 

    [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideSplash) userInfo:nil repeats:NO]; 
} 

- (void)hideSplash { 
    [NSApp endSheet:self.window]; 
    [self.window orderOut:nil]; 
} 

이지만, hideSplash 함수가 호출되지 않습니다. 그 이유는 무엇입니까?

답변

3

난 당신이 오류가 발생하지 않는 것이 궁금하지만,이 라인은 오타가 있습니다

[NSTimer scheduledTimerWithTimeInterval:2.0 target self selector:@selector(hideSplash) userInfo:nil repeats:NO]; 

는 한편

[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideSplash) userInfo:nil repeats:NO]; 

을해야을, 당신이 시도 할 수 하나

NSTimer *theTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(hideSplash) userInfo:nil repeats:NO]; 
[[NSRunLoop mainRunLoop] addTimer:theTimer forMode:NSRunLoopCommonModes]; 

은 내가 [NSTimer이 ...] 인스턴스에 할당하면 괜찮을 것 ... 너무 빨리 파괴되어 있는지 확실하지 않습니다. 또한 afaik 실행 루프가 중단되므로 주 실행 루프에 타이머를 추가 할 수 있습니다.

+0

죄송합니다. 잘못 입력했습니다. 정답이 아닙니다. 방금 질문을 수정했습니다. – Yun

+0

이미 NSTimer 멤버 변수를 SplashWindowController에 추가하고 유지하려고 시도했지만 결과는 동일합니다. – Yun

+0

... 'mainRunLoop'을 추가 했습니까? ;-) – tamasgal