2016-12-02 7 views
2

목적무기한 실행 코드 아이폰 OS

타이머을 사용하지 스레드
  • 사용하여 일정한 간격으로
  • 에서 무기한 코드를 실행

    Android의 샘플은 다음과 같습니다.

  • Thread thread = new Thread() { 
          @Override 
          public void run() { 
    
           while (recordingState == STATE.RECORDING) { 
    
            System.out.println("Yay! we are still recording") 
    
            try { 
             Thread.sleep(1000/12); //12 fps refresh rate 
            } catch (InterruptedException ignored) { 
    
            } 
           } 
          } 
         }; 
    
    thread.start(); 
    

    이 코드는 우리가 기록되는 때까지 초당 12 개 프레임을 위해 실행됩니다. 아이폰 OS (SWIFT)는 (특히 일정 간격)으로 타이머를 사용하여 달성 될 수 있지만 비슷한

    뭔가 상기 방법 더 유사 어쨌든 무엇입니까?

    참고 : Objective-C에 대한 지식이 없으므로 신속하게 답변 해 주시기 바랍니다. 그럼에도 불구하고 모든 대답을 환영합니다.

    답변

    1
    DispatchQueue.global(qos: .background).async { 
             while self.recording{ 
              DispatchQueue.main.async { 
               print(":::> \(self.recorder?.currentTime)") 
              } 
              usleep(useconds_t(1e+6)/30) // sleep in milliseconds 30 fps 
             } 
            } 
    

    젠장! 나 자신을 찾았 어. 같은 방식이 여기에서 효과가있었습니다. sleep() 함수는 초로 매개 변수를 고려하므로 usleep()을 대신 사용하십시오.

    1

    코드는 목적 C에 무한 모드에서 타이머를 실행하는

    NSTimer *timerRefresh; 
    
    timerRefresh = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timerFired) userInfo:nil repeats:YES]; 
    
    -(void) timerFired{ 
    }