ios - iOS NSTimer不调用选择器-不触发

标签 ios objective-c nstimer

我有:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self setNeedsStatusBarAppearanceUpdate];
    NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(setCurrentTime:)  userInfo:nil repeats:YES];
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    [timer fire];

}
-(void)setCurrentTime{
    NSLog(@"TEST");
    dispatch_async(dispatch_get_main_queue(), ^{
        NSDate *currentDate = [[NSDate alloc] init];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"HH:mm"];
        [currentTime setText:[dateFormatter stringFromDate:currentDate]];
    });
}

但是什么也没有得到。

最佳答案

您正在调用错误的选择器。您的“setCurrentTime”实现不带任何参数(例如,要正确地进行消息传递或调用,您应该使用“selector:@selector(setCurrentTime)”。

现在,如果您查看Apple's documentation for [NSTimer scheduledTimerWitTimeInterval: target: selector: userInfo: repeats:] ,Apple表示您的方法应具有以下签名:

- (void)setCurrentTime: (NSTimer *) timer

这意味着您的函数将如下所示:
-(void)setCurrentTime: (NSTimer *) timer
{
    NSLog(@"TEST");
    dispatch_async(dispatch_get_main_queue(), ^{
        NSDate *currentDate = [[NSDate alloc] init];
        NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
        [dateFormatter setDateFormat:@"HH:mm"];
        [currentTime setText:[dateFormatter stringFromDate:currentDate]];
    });
}

并被这样称呼:
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:0.25 
                   target:self 
                 selector:@selector(setCurrentTime:)  
                 userInfo:nil 
                  repeats:YES];

关于ios - iOS NSTimer不调用选择器-不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19217802/

相关文章:

objective-c - NSDecimalNumber、NSDecimalNumberHandler 和线程

swift - NSTimer 失效不能正常工作

cocoa - 是否可以在 NSTimer 的间隔内知道当前时间?

ios - iPad 上的 iPhone 应用程序 : drawViewHierarchyInRect causes glitch

ios - UInt8如何分为3位和5位

iphone - 在我的 View Controller.m 上填充 Dealloc

ios - NSTimer 要求我将其添加到运行循环中

ios - 从 "bouncing"垂直停止 UIWebView?

ios - iPad 上未显示应用程序图标

iphone - 如何上传从 UIImagePickerController 获取的图像