mot*_*tox 1 object-state nstimer uilabel ios
我有一个NSTimer我想每秒更新一个标签.我的代码是:
- (IBAction)OnClickEmergencyButton:(id)sender
{
emergencyAlertTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(emergencyTimer) userInfo:nil repeats:YES];
[emergencyAlertTimer fire];
}
- (void)emergencyTimer
{
int i = 0;
_emergencyAlertTriggerTimerLabel.text = [NSString stringWithFormat:@"%d", ++i];
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,标签最初显示为"1"然后停止.
我希望标签每秒都能连续计数,比如"1","2","3"......
您的计时器没有问题.问题在于内部的变量声明emergencyTimer,您将其声明为局部变量.因此,每次计时器触发时,变量将再次初始化为0.因此,将变量声明为static,以便它可以保留该值.
改变方法如:
-(void)emergencyTimer
{
static int timeValue = 0;
_emergencyAlertTriggerTimerLabel.text = [NSString stringWithFormat:@"%d",++timeValue];
}
Run Code Online (Sandbox Code Playgroud)
为什么静态变量和为什么不是实例变量?
我没有使用实例变量来保持变量"Scope"安全.如果我将它作为实例变量,它可以被同一个类的其他方法访问,如果不需要该功能,我认为使用静态变量会更好.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |