iOS 9兼容版本的NSTimer scheduledTimerWithTimeInterval:重复:block:?
问题描述:
我在iOS 10中使用下面的代码,但是当我在iOS 9中运行它时,它崩溃了。我不认为NSTimer scheduledTimerWithTimeInterval:repeats:block:支持iOS 9.我如何实现一个可以在iOS 8-10中工作的计时器?iOS 9兼容版本的NSTimer scheduledTimerWithTimeInterval:重复:block:?
static NSTimer* timer = nil;
- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller
{
timer = [NSTimer scheduledTimerWithTimeInterval:0.1 repeats:YES block:^(NSTimer * _Nonnull timer) {
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}];
}
-(void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller
{
[timer invalidate];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
答
您似乎在使用iOS10中引入的功能。再往下,你链接的页面是在iOS的2
使用,而不是一个功能。
答
这个固定:
static NSTimer* timer = nil;
- (void)documentInteractionControllerWillBeginPreview:(UIDocumentInteractionController *)controller
{
timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(hideStatusBar) userInfo:nil repeats:YES];
}
-(void)hideStatusBar
{
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
-(void)documentInteractionControllerDidEndPreview:(UIDocumentInteractionController *)controller
{
[timer invalidate];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
}
什么崩溃日志说。仅供参考NSTimer一直存在。 – Fogmeister
使用Swift的另一个原因。它本可以拒绝编译,从而避免了崩溃。这是因为Swift _knows_这种方法在iOS 9上不被支持。我很惊讶地听到Objective-C没有赶上。你甚至没有收到警告?惊人。 – matt