objective-c - 从函数中获取局部变量并在另一个可以动态更改的函数中实现该变量

标签 objective-c cocoa xcode macos nstimer

我的应用程序有一个函数,它从 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/

相关文章:

iphone - Reminders.app 双向同步逻辑

iphone - 是否可以在 cocoa 或 iPhone 中将视频编码从 H.263 转换为 H.264

ios - 简单的 Swift Stepper 错误

objective-c - 如何以编程方式检测 iPad 的世代?

objective-c - 用于发送电子邮件的脚本桥 - 错误 : Object not added to container yet

ios - 暂时禁用今日扩展

c++ - 用于 iOS 的 leptonica 1.69 交叉编译(armv7、armv7s 和 arm64)

iphone - 如何在 iPhone 中制作无限 ScrollView ?

iphone - 在应用程序启动之间保留数据

iOS 静默推送通知仅在连接到 xcode 时有效