我试过了
var timer = NSTimer()
timer(timeInterval: 0.01, target: self, selector: update, userInfo: nil, repeats: false)
Run Code Online (Sandbox Code Playgroud)
但是,我说错了
'(timeInterval: $T1, target: ViewController, selector: () -> (), userInfo: NilType, repeats: Bool) -> $T6' is not identical to 'NSTimer'
Run Code Online (Sandbox Code Playgroud) 在这种情况下,永远不会调用timerFunc().我错过了什么?
class AppDelegate: NSObject, NSApplicationDelegate {
var myTimer: NSTimer? = nil
func timerFunc() {
println("timerFunc()")
}
func applicationDidFinishLaunching(aNotification: NSNotification?) {
myTimer = NSTimer(timeInterval: 5.0, target: self, selector:"timerFunc", userInfo: nil, repeats: true)
}
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
NSTimer不会停止
我有这个代码:
[NSTimer scheduledTimerWithTimeInterval:110.0
target:self
selector:@selector(targetMethod:)
userInfo:nil
repeats:YES];
- (void) targetMethod:(NSTimer) timer{
NSLog(@"Hello World");}
Run Code Online (Sandbox Code Playgroud)
在targetMethod我可以用[timer invalidate]停止计时器,但是在这个方法之外,我怎么能停止targetMethod?
我有一个计时器,viewWillAppear在调用方法时触发,并在调用viewDidDisappear方法时无效.但是在视图之间进行一定量的切换之后,计时器即使在无效之后也会继续触发.有什么问题?
这是我的代码:
NSTimer *timer;
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
timer = [NSTimer scheduledTimerWithTimeInterval: 0.2f
target: self
selector:@selector( timerAction )
userInfo:nil
repeats:YES];
}
-(void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
[timer invalidate];
timer = nil;
}
-(void) timerAction
{
NSLog(@"timerAction");
}
Run Code Online (Sandbox Code Playgroud) 我像这样添加计时器
tim=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(repeatTim) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:tim forMode:NSDefaultRunLoopMode];
Run Code Online (Sandbox Code Playgroud)
蒂姆是我班的NSTimer财产.
然后我点击按钮就停止它
[[fbt tim] invalidate];
[fbt setTim:nil];
Run Code Online (Sandbox Code Playgroud)
fbt它是我班级的实例.
如果我只调用invalidate然后它不会停止,但如果我将它设置为nil然后我得到了EXC_BREAKPOINT
这里选择器中的repeatTim方法的代码
AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
[appDelegate.wbv stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"intal()"]];
Run Code Online (Sandbox Code Playgroud)
我试着打电话给初始化和无效的
dispatch_async(dispatch_get_main_queue(), ^{})
Run Code Online (Sandbox Code Playgroud)
它也不会停止计时器.
可能重复:
NSTimer不会停止
我正在使用NSTimer在播放音频时更新滑块的值.
if (sliderUpdateTimer) {
[sliderUpdateTimer invalidate];
sliderUpdateTimer=nil;
}
sliderUpdateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateSliderForAudio) userInfo:nil repeats:YES];
Run Code Online (Sandbox Code Playgroud)
一旦音频播放完毕,我在audioPlayer委托方法中使Timer无效.
-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{
NSLog(@"audioPlayerDidFinishPlaying");
[player release];
audioPlayer=nil;
[sliderUpdateTimer invalidate];
[sliderUpdateTimer release];
sliderUpdateTimer=nil;
Run Code Online (Sandbox Code Playgroud)
}
委托方法被调用,但计时器没有停止....我只有一次线程,我正在运行计时器.但仍然计时器不会停止......欢迎任何这方面的帮助......