2012-02-18 3 views
2

3 초마다 코드가 "New Version"으로 표시되기를 기대하지만 그렇지 않습니다.NSTimer가 작동하지 않습니다.

Car.h

#import <Foundation/Foundation.h> 

@interface Car : NSObject 


-(void)displayVersion; 
@end 

Car.m이

#import "Car.h" 

@implementation Car 

-(void)displayVersion 
{ 
    NSLog(@"New version"); 
} 

@end 

main.c를

#import <Foundation/Foundation.h> 
#import "Car.h" 

int main (int argc, const char * argv[]) 
{ 
    @autoreleasepool 
    { 
     Car *ford = [[Car alloc]init]; 

     [NSTimer scheduledTimerWithTimeInterval:3 
             target:ford 
             selector:@selector(displayVersion) 
             userInfo:nil 
             repeats:YES]; 
    } 
    return 0; 
} 

여기에 어떤 문제가 있습니까?

PS : 나는 "당신의 포스트 코드 섹션을 설명하는 많은 컨텍스트가없는, 시나리오를 설명하시기 바랍니다 더 명확하게"싫어

내가 코드에서는 문제의 최선의 설명이다 생각!

답변

5

NSTimer는 작동하기 위해 실행중인 NSRunLoop에 의존합니다. 타이머를 생성하고 예약 한 직후에 프로그램이 종료되고 NSRunLoop이 절대로 설정되지 않습니다. 일반적으로 Cocoa 앱에서 NSApplicationMain()main()으로 호출하면 기본 실행 루프가 설정되고 "회전"됩니다. Xcode의 기본 Cocoa 앱 템플릿을 사용하여 새 프로젝트를 만들고 NSApplicationDelegate의 -(void)applicationDidFinishLaunching: 메소드에서 타이머를 생성해야합니다.

관련 문제