我是Cocoa / Objective C的新手。我要在NSSTring
执行的每次迭代中更改全局NSTimer
变量的值。我已经在文件顶部的appdelegate.m中声明了变量,所以它是全局的:
NSString *my_string = @"hello";
我致电NSTimer
:
[[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(scan:) userInfo:nil repeats:YES] fire];
和内部扫描我将新值设置为my_string
:
- (void) scan:(NSTimer *)timer{
//some execution
my_string = @"the new value";
}
但变量值始终相同“hello”,内容不会改变。 是否有可能做到这一点?溶液
答案 0 :(得分:0)
您不需要调用fire方法,计划的计时器将在指定的间隔后自动触发。
另外,在scan:方法中设置一个断点,以确定它是否被调用。
答案 1 :(得分:0)
如果在.m文件中声明my_string变量,则其他文件将无法看到它(#import .h文件而不是.m文件)。你在同一个文件(appdelegate.m)中做了计时器吗?
我建议不要使用像这样的全局变量,因为在项目建立时它会经常混淆。您可以将它作为带有访问器的ivar,或者带有静态访问器的@implementation块中的静态,以便您可以从任何地方访问唯一的实例。
您可以记录更改以确保更改或设置断点。
- (void) scan:(NSTimer *)timer{
//some execution
my_string = @"the new value";
NSLog(@"Changed my_string to %@", my_string);
}