gpt4 book ai didi

ios - AppDelegate中的NSTimer从不触发

转载 作者:行者123 更新时间:2023-12-01 17:30:49 25 4
gpt4 key购买 nike

我需要任意启动一个NSTimer,它将每N秒重复一次,直到我停止它为止。 不重复。

我已经尝试过SO解决方案描述了hereherehere。接受的答案均无效。

这就是我所做的。我的UIViewController正在调用:

[AppDelegate doStartMessageRefresh];

在AppDelegate.m中:
#define MESSAGE_REFRESH_INTERVAL_SECONDS    3.0
@property (nonatomic, retain, strong) NSTimer *messageRefreshTimer;
- (void) doInvokerForDoStartMessageRefresh
{
NSLog(@"%s", __FUNCTION__);
NSLog(@"%@", [self.messageRefreshTimer fireDate]);
}
- (void) doStartMessageRefresh {
NSLog(@"%s", __FUNCTION__);
/*
self.messageRefreshTimer = [NSTimer scheduledTimerWithTimeInterval:MESSAGE_REFRESH_INTERVAL_SECONDS
target:self
selector:@selector(doInvokerForDoStartMessageRefresh)
userInfo:nil
repeats:YES];
*/
self.messageRefreshTimer = [NSTimer timerWithTimeInterval:MESSAGE_REFRESH_INTERVAL_SECONDS
target:self
selector:@selector(doInvokerForDoStartMessageRefresh)
userInfo:Nil
repeats:YES];
// [self.messageRefreshTimer fire];
//[[NSRunLoop currentRunLoop] addTimer:self.messageRefreshTimer forMode:NSRunLoopCommonModes];
[[NSRunLoop currentRunLoop] addTimer:self.messageRefreshTimer forMode:NSDefaultRunLoopMode];
}

打印出来的唯一日志行是:
2014-05-02 16:34:20.248 myappnamehere[9977:6807] -[AppDelegate doStartMessageRefresh]

如果我取消注释该行[self.messageRefreshTimer fire];它运行一次。

如果我将选择器制定为:@selector(doInvokerForDoStartMessageRefresh :)并手动触发,则会收到无法识别的选择器

最佳答案

您的方法签名错误。应该是doInvokerForDoStartMessageRefresh:doInvokerForDoStartMessageRefresh:(NSTimer *)timer,而不是doInvokerForDoStartMessageRefresh。注意:是方法名称的一部分!没有冒号,则是完全不同的方法。

这是设置重复计时器的方法:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timer:) userInfo:nil repeats:YES];

return YES;
}

- (void)timer:(NSTimer *)timer
{
NSLog(@"%@", [NSDate date]);
}

另外,如果要在属性中存储计时器,请不要这样做:
@property (nonatomic, retain, strong) NSTimer *messageRefreshTimer;

只是这样做:
@property NSTimer *messageRefreshTimer;

关于ios - AppDelegate中的NSTimer从不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23438599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com