我必须在我的应用程序中的特定时间间隔之后调用函数调用myfunc,并且此函数将永远运行。但是,问题是每当我使用以下代码时,我的iphone声音消失。
self.now = [NSDate date] ;
self.timer = [[NSTimer alloc] initWithFireDate:self.now
interval:100
target:self
selector:@selector(myfunc)
userInfo:nil
repeats:YES] ;
self.runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer:self.timer forMode:NSDefaultRunLoopMode];
[self.runLoop runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10000]];
只有铃声响起。所有其他声音都停止工作。就像键盘锁定声音和音量条一样,让你调整你的iphone音量也消失了。请告诉我我做错了哪些会损坏iphone声音。< / p>
我很确定这是阻止iphone声音的代码片段。当我发表评论时声音开始工作。有人知道这种方法的解决方案吗?如果没有,是否有人知道另一种方法来执行相同的功能?
答案 0 :(得分:5)
NSTimer
会暂停。
你必须开始一些后台任务才能做你想做的事。但即使如此,在将应用程序置于后台后,您将被限制在一定的时间内。
仅为位置跟踪,VoIP或音频应用授予实际后台行为。其他应用必须面临限制:一旦在后台,您将有足够的时间来完成以beginBackgroundTaskWithExpirationHandler:
(backgroundTimeRemaining)开头的任务。
“iOS应用程序编程指南,后台执行代码”中描述了整个内容。
答案 1 :(得分:0)
试试这个
NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval: 100.0
target: self
selector: @selector(myFunc)
userInfo: nil
repeats: YES];
[[NSRunLoop currentRunLoop] addTimer: myTimer forMode: NSRunLoopCommonModes];
//选择器实现
- (void) myFunc {
NSLog(@"myFunc");
}