我的应用程序有一个函数,它从 NSTextField
获取值,然后声明变量,如下所示:
- (IBAction)startTimer
//all the other code
int totalTime = secs + hoursInSeconds + minutesInSeconds
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerHandler) userInfo:nil repeats:YES];
然后,我想在另一个处理 NSTimer
的函数中使用局部变量 totalTime
。
- (void)timerHandler
//all other code
totalTime = totalTime - 1;
//invalidate timer when it reaches 0
if (totalTime == 0.0) {
[timer invalidate];
然而,由于变量totalTime是一个局部变量,我无法使用该值,并且我无法移动代码,因为NSTimer每1秒调用一次它,并且用户可能会更改该变量(从而重新声明它)。
那么,有什么方法可以从函数中获取局部变量并在另一个可以动态更改的函数中实现该变量吗?或者我可以仅使用一个函数来实现 NSTimer 倒计时
最佳答案
您可以将值包装在计时器的userInfo
中:
NSNumber *totalTimeNumber = [NSNumber numberWithInt:totalTime];
timer = [NSTimer scheduledTimerWithTimeInterval:... target:... selector:... userInfo:totalTimeNumber repeats:...];
或者只是将其设为实例变量。
关于objective-c - 从函数中获取局部变量并在另一个可以动态更改的函数中实现该变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770952/