2012-02-18 335 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()設置主運行循環並開始「旋轉」它。您應該使用Xcode中的默認Cocoa應用程序模板創建一個新項目,並在NSApplicationDelegate的-(void)applicationDidFinishLaunching:方法中創建您的計時器。