我想自己制作一个计时器,但它不起作用。似乎每次重复它都会为零,有人吗?它适用于 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 ++;
}
最佳答案
问题在于,每次执行计时器方法时,您都会重新声明 test
并为其分配 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++;
}
关于ios - iOS 上的计时器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12221739/