iOS上的计时器不';行不通

iOS上的计时器不';行不通,ios,timer,Ios,Timer,我想自己做一个计时器,但没用。好像每次重复都是零,有人吗?它可以在OSX上运行,但不能在iOS上运行 我只需要一个有效的循环方法-有什么建议吗 标题: @interface ViewController : UIViewController @property (strong, nonatomic) IBOutlet UILabel *timerOutlet; - (void)timer:(id)sender; @end 实施: @synthesize timerOutlet; - (voi

我想自己做一个计时器,但没用。好像每次重复都是零,有人吗?它可以在OSX上运行,但不能在iOS上运行

我只需要一个有效的循环方法-有什么建议吗

标题:

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UILabel *timerOutlet;
- (void)timer:(id)sender;
@end
实施:

@synthesize timerOutlet;

- (void)viewDidLoad
{
    [super viewDidLoad];
    started = TRUE;
    [self timer:nil];
}

- (void)timer:(id)sender {
    int test = 1;
    NSString *number = [NSString stringWithFormat:@"%i",test];
    timerOutlet.text = number;
    [self performSelector:@selector(timer:) withObject:Nil afterDelay:1.0];
    test ++;                
}

问题是您重新声明
test
,并在每次执行timer方法时为其分配1。因此,如果省略声明并将
test
设置为实例变量,或者将其设置为
static
,应该会有所帮助。但是,除此之外,您应该真正使用NSTimer对象,而不是强奸框架

- (void)viewDidLoad
{
    [super viewDidLoad];
    started = TRUE;
    test = 1;
    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timer:) userInfo:nil repeats:YES];
}

- (void)timer:(id)sender {
    NSLog(@"%i",test);
    test++;
}
您在int test=1中忘记了“static”

static int test = 1;

您应该很高兴。

不要在每次函数启动时初始化测试变量。因此,它将只启动一次。不是很好的解决方案,但这个计时器想法一点也不好…)我知道——看看我的答案(和名声)。我的意思是,你应该把解释写进你的答案中,以教育张贴问题的OP:)谢谢!!这就是问题所在。。。哈哈,有时候你无法处理代码。。哈哈,我怎么会这么笨!——”谢谢哈哈,我就用Ntimermethod@user1637253没问题,没什么,你看