2

我正在尝试自己制作一个计时器,但它不起作用。似乎每次重复都为零,有人吗?它适用于 OS X,但不适用于 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 ++;                
}
4

2 回答 2

3

test问题是您每次执行计时器方法时都重新声明并为其分配 1。因此,如果您要么省略声明并创建test一个实例变量,要么 make it 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++;
}
于 2012-08-31T20:02:15.223 回答
0

您在 int test = 1; 中忘记了“静态”

static int test = 1;

你应该很高兴。

于 2012-08-31T20:04:21.387 回答