NSTimer停止iphone声音?

时间:2013-03-14 07:31:17

标签: iphone ios objective-c jailbreak

我必须在我的应用程序中的特定时间间隔之后调用函数调用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声音的代码片段。当我发表评论时声音开始工作。有人知道这种方法的解决方案吗?如果没有,是否有人知道另一种方法来执行相同的功能?

2 个答案:

答案 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");
}