Mid*_* MP 30 timer nstimer ios
在我的项目中实现它之前,我已经用计时器创建了一个测试应用程序.这是我第一次使用计时器.但问题是当我实现计时器使用时[NSTimer timerWithTimeInterval: target: selector: userInfo: repeats: ];,它无法正常工作.这是我的代码,界面:
@interface uialertViewController : UIViewController
{
NSTimer *timer;
}
-(void)displayAlert;
-(void)hideandview;
@end
Run Code Online (Sandbox Code Playgroud)
执行:
@implementation uialertViewController
- (void)viewDidLoad {
[self displayAlert];
[super viewDidLoad];
}
-(void)displayAlert{
timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(hideandview) userInfo:nil repeats:NO];
alert = [[UIAlertView alloc] initWithTitle:@"testing" message:@"hi hi hi" delegate:nil cancelButtonTitle:@"continue" otherButtonTitles:nil];
[alert show];
[alert release];
alert = nil;
}
-(void)hideandview{
NSLog(@"triggered");
[alert dismissWithClickedButtonIndex:0 animated:YES];
[alert release];
[self displayAlert];
}
@end
Run Code Online (Sandbox Code Playgroud)
然后我换 [NSTimer timerWithTimeInterval: target: selector: userInfo: repeats: ]; 了 [NSTimer scheduledTimerWithTimeInterval: target: selector:userInfo: repeats: ]; ,它正在工作.问题是timerWithTimeInterval:什么?我在第一次实施时是否正在处理任何事情?提前致谢.
Jos*_*rey 120
scheduledTimerWithTimeInterval:invocation:repeats:并scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:创建自动添加到a的计时器NSRunLoop,这意味着您不必自己添加它们.将它们添加到一个NSRunLoop是导致它们触发的原因.
使用timerWithTimeInterval:invocation:repeats:和timerWithTimeInterval:target:selector:userInfo:repeats:,您必须手动将计时器添加到运行循环中,代码如下:
[[NSRunLoop mainRunLoop] addTimer:repeatingTimer forMode:NSDefaultRunLoopMode];
Run Code Online (Sandbox Code Playgroud)
这里的其他答案表明你需要打电话给fire自己.你不这样做 - 只要计时器被置于运行循环中就会被调用.
| 归档时间: |
|
| 查看次数: |
27086 次 |
| 最近记录: |