0

我必须在我的应用程序中的特定时间间隔后调用一个函数调用 myfunc 并且这个 func 永远运行。但是,问题是每当我使用以下代码时,我的 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 声音。

我很确定这是停止 iphone 声音的一段代码。当我评论它时,声音开始起作用。有人知道这种方法的解决方案吗?如果没有,是否有人知道执行相同功能的另一种方法?

4

2 回答 2

5

NSTimer当应用程序处于后台状态时暂停。

你必须启动一些后台任务来做你想做的事。但即便如此,您将被限制在应用程序进入后台后的一定时间内。

真正的后台行为仅适用于位置跟踪、VoIP 或音频应用程序。其他应用程序必须面临限制:一旦进入后台,您将获得一定的时间来完成您开始执行的任务beginBackgroundTaskWithExpirationHandler:(backgroundTimeRemaining)。

整个事情在 iOS 应用程序编程指南,在后台执行代码中进行了描述。

于 2013-03-14T07:51:38.470 回答
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");
}
于 2013-03-14T07:51:02.450 回答