iOS - 执行一段代码10秒钟

Bri*_*yle 1 objective-c nstimer ios

我想每500毫秒执行一段代码,总共10秒钟.我用这段代码每半秒执行一次代码

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(getLevel:) userInfo:nil repeats: YES];
Run Code Online (Sandbox Code Playgroud)

但我似乎无法弄清楚如何在10秒后停止执行."重复"参数似乎不允许指定的时间.有人能指出我应该去哪里的方向吗?

谢谢Brian

Dan*_*iel 5

你需要invalidate在NSTimer上发出scheduleTimerWithTimeInterval:target:selector:userInfo:repeats:给你的消息.例如,在类的属性或iVar中分配方法返回给你的NSTimer,并在10秒后调用invalidate它.

例:

.H:

@interface myClass{
NSTimer *myT;
}
[...]
Run Code Online (Sandbox Code Playgroud)

.M:

[...]
{
    myT = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(getLevel:) userInfo:nil repeats: YES];

    [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(stop) userInfo:nil repeats:NO];
}

-(void)stop{
    [myT invalidate];
}
[...]
Run Code Online (Sandbox Code Playgroud)

NSTimer如果你想通过实现某种finish标志并跟踪你向该getLevel方法发送的次数,你可以避免另一种,因为它是每0.5秒,这将是20次.

但我宁愿使用2个NSTimer物体,因为你知道它是10秒而不管其他计时器,你可能决定改变它,频率上升或下降......