You could also use GCD. So run
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateLabel:) userInfo:nil repeats:YES];
});
and now in your updateLabel method
- (void) updateLabel:(id) sender {
NSString *text = @"some text";
dispatch_sync(dispatch_get_main_queue(), ^{
label.text = text;
});
}
This will update the label in the main thread.