찾다

 >  Q&A  >  본문

ios - 用什么类 可以每隔一段时间执行一次代码 包括在后台

1.用timer的话 vc没有了 timer也跟着释放了 如果不释放 那就成循环引用了
2.用本地通知的话,只能设置固定时间为触发时间,不能像定时器那样每隔一段时间执行一次

迷茫迷茫2771일 전533

모든 응답(4)나는 대답할 것이다

  • PHPz

    PHPz2017-04-18 09:53:38

    GCD 타이머 사용을 권장합니다. GCD의 타이머는 NSTimer와 다릅니다. NSTimer는 RunLoop의 영향을 받지만 RunLoop도 GCD를 기반으로 하기 때문에 GCD의 타이머는 영향을 받지 않습니다.

    으아아아

    회신하다
    0
  • ringa_lee

    ringa_lee2017-04-18 09:53:38

    NSTimer 싱글턴을 사용한 다음 메인 스레드에 참여하세요 runloop

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 09:53:38

    에이전트 플러스 GCDj 플러스 싱글톤

    회신하다
    0
  • 黄舟

    黄舟2017-04-18 09:53:38

    사용 방법은 귀하에게 달려 있습니다. 구체적인 상황을 분석하십시오.

    • 개인적으로 가장 좋은 방법은 Runloop입니다. 새 클래스를 만들고 클래스가 인스턴스를 초기화한 후 새 스레드를 만들고 이 스레드의 Runloop 메시지를 듣고 신호 소스를 추가한 다음 구현합니다. 콜백 메소드에 필요한 사항이 있습니다. 이렇게 하면 일부 NSTimer 오류나 기타 문제를 피할 수 있습니다.

    • 두 번째는 모니터링CADisplayLink입니다. 물론 모니터링CADisplayLink에도 작업량이 많아 '프레임 드랍'이 발생할 수 있습니다.

    그런데 등록하지 않으면 백그라운드에서 구현하기가 쉽지 않습니다音频服务. 이 방법도 공부할 수 있습니다.

    으아악

    회신하다
    0
  • 취소회신하다