我希望代码每3秒显示一次“新版本”,但事实并非如此。
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:我讨厌“你的帖子没有太多的背景来解释代码部分;请更清楚地解释你的场景”
我认为代码是问题的最佳解释!
答案 0 :(得分:5)
NSTimer依赖于正在运行的NSRunLoop来运行。创建和计划计时器后,您的程序会立即终止,并且永远不会设置NSRunLoop。通常,在Cocoa应用程序中,NSApplicationMain()
中对main()
的调用会设置主运行循环并开始“旋转”它。您应该使用Xcode中的默认Cocoa应用程序模板创建一个新项目,并使用NSApplicationDelegate的-(void)applicationDidFinishLaunching:
方法创建计时器。