2012-02-18 3 views
2

Я ожидаю, что код будет отображаться «Новая версия» каждые 3 секунды, но это не так.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() устанавливает основной цикл запуска и начинает «вращать» его. Вы должны создать новый проект с использованием шаблона приложения Cocoa по умолчанию в Xcode и создать свой таймер в методе -(void)applicationDidFinishLaunching: NSApplicationDelegate.

Смежные вопросы