NSTimer无法正常工作

OhD*_*Doh 2 objective-c

我希望代码每3秒显示一次"新版本",但事实并非如此.

Car.h

#import <Foundation/Foundation.h>

@interface Car : NSObject


-(void)displayVersion;
@end 
Run Code Online (Sandbox Code Playgroud)

Car.m

#import "Car.h"

@implementation Car

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

@end
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

PS:我讨厌"你的帖子没有太多的背景来解释代码部分;请更清楚地解释你的场景"

我认为代码是问题的最佳解释!

And*_*sen 5

NSTimer依赖于运行的NSRunLoop来运行.创建和计划计时器后,程序会立即终止,并且永远不会设置NSRunLoop.通常,在Cocoa应用程序中,对NSApplicationMain()in 的调用会main()设置主运行循环并开始"旋转"它.您应该使用Xcode中的默认Cocoa应用程序模板创建一个新项目,并在NSApplicationDelegate的-(void)applicationDidFinishLaunching:方法中创建您的计时器.