gpt4 book ai didi

ios - 如何使 NSTimer 失效 哪一个在循环中运行?

转载 作者:搜寻专家 更新时间:2023-10-30 20:15:22 25 4
gpt4 key购买 nike

我想以不同的时间表播放声音,例如每 3 次、每 5 次、9 次之后、22 次之后......等等,所以我创建了一个 for 循环并像这样传递不同的 -2 scheduledTimerWithTimeInterval。

    -(void)bellsSchedual{

arrBellsListAllData=[EMeditationDBModel getDataFromBellsList:prop.userId];
EMeditationDBProperty *bellProp=[[EMeditationDBProperty alloc]init];
for (int i=0; i<arrBellsListAllData.count; i++)
{
bellProp=[arrBellsListAllData objectAtIndex:i];

NSString *bellsTime=bellProp.bTime;
if ([bellProp.bTimeSchedule isEqualToString:@"after"]) {

bellTimer= [NSTimer scheduledTimerWithTimeInterval: [bellsTime intValue] target: self
selector: @selector(playSound:) userInfo:nil repeats: NO];

}
else if ([bellProp.bTimeSchedule isEqualToString:@"every"]){

bellTimer=[NSTimer scheduledTimerWithTimeInterval:[bellsTime intValue] target: self
selector: @selector(playSound:) userInfo:nil repeats: YES];

}
}
}

问题是我的计时器没有失效。如果 for 循环只运行一次该时间计时器失效。

最佳答案

我认为你应该采用 NSTimers 数组的方法

某处,大部分在您的 viewDidLoad 中

NSMutableArray *arrTimers = [[NSMutableArray alloc] init]

在你的代码中

for (int i=0; i<arrBellsListAllData.count; i++)
{
bellProp=[arrBellsListAllData objectAtIndex:i];
NSString *bellsTime=bellProp.bTime;
if ([bellProp.bTimeSchedule isEqualToString:@"after"]) {

NSTimer *bellTimer= [NSTimer scheduledTimerWithTimeInterval:[bellsTime intValue] target: self
selector: @selector(playSound:) userInfo:nil repeats: NO]

[arrTimers addObject:bellTimer];
}
else if ([bellProp.bTimeSchedule isEqualToString:@"every"]){

NSTimer *bellTimer=[NSTimer scheduledTimerWithTimeInterval:[bellsTime intValue] target: self
selector: @selector(playSound:) userInfo:nil repeats: YES];
[arrTimers addObject:bellTimer];

}
}

循环失效

-(void) invalidateAllTimers{
for( NSTimer *timer in arrTimers) {
[timer invalidate];
}
}

如果你想使一个特定的计时器无效,那么使用

[NSTimer scheduledTimerWithTimeInterval:[bellsTime intValue]
target:self
selector:@selector(playSound:)
userInfo:anyId
repeats:NO];

在 userInfo 对象中传递任何标识符以查找任何特定计时器。

关于ios - 如何使 NSTimer 失效 哪一个在循环中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33545410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com