2013-03-14 1 views
0

내 애플 리케이션에서 특정 시간 간격 후에 함수 호출 myfunc를 호출해야하고이 func은 영원히 실행됩니다. 그러나 다음 코드를 사용할 때마다 문제가 발생합니다. 아이폰 사운드가 사라집니다.NSTimer가 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]]; 

만 벨소리 소리가 다른 소리가 working.Like에게 키패드 잠금 소리와 당신은 또한 서요 내가 어떤 손상을 잘못하고있는 무슨 말해 이동 아이폰의 볼륨을 조정할 볼륨 막대를 중지 works.All 아이폰 사운드.

나는 이것이 아이폰 사운드를 멈추는 코드 조각이라고 확신한다. 내가 소리를 낼 때 소리가 나기 시작한다. 아무도이 방법에 대한 해결책을 알고 있습니까? 그렇지 않다면 동일한 기능을 수행하는 또 다른 방법을 아는 사람이 있습니까?

답변

5

NSTimer가 일시 중지를보십시오.

원하는 작업을 수행하려면 백그라운드 작업을 시작해야합니다. 하지만 그걸로도 앱을 백그라운드에 넣은 후 일정 시간 동안 만 제한됩니다.

실제 backgrounding 동작은 위치 추적, VoIP 또는 오디오 응용 프로그램에만 부여됩니다. 다른 앱은 한계에 직면해야합니다. 백그라운드에서 한 번 작업을 완료하려면 beginBackgroundTaskWithExpirationHandler: (backgroundTimeRemaining)으로 시작해야합니다.

모든 것은 iOS Application Programming Guide, 백그라운드에서 코드 실행에서 설명합니다.

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"); 
} 
관련 문제