iOS Runloop 면접 문제 (RunLoop 의 데이터 구조)

2108 단어
RunLoop 의 데이터 구조NSRunLoop(Foundation)CFRunLoop(CoreFoundation) 의 패키지 로 대상 을 대상 으로 하 는 API RunLoop 과 관련 된 주요 다섯 가지 유형 을 제공 했다.CFRunLoop: RunLoop 대상 CFRunLoopMode: 실행 모드 CFRunLoopSource: 입력 소스 / 이벤트 소스 CFRunLoopTimer: 정시 소스 CFRunLoopObserver: 관찰자
1、CFRunLoop pthread (스 레 드 대상, RunLoop 과 스 레 드 가 일일이 대응 한 다 는 것 을 설명 함), currentMode (현재 있 는 실행 모드), modes (여러 실행 모드 의 집합), commonModes (모델 이름 문자열 집합), commonModelItems (Observer, Timer, Source 집합) 으로 구성 된다.
2、CFRunLoopMode
name, source 0, source 1, observers, timers 로 구성 되 어 있 습 니 다.
3、CFRunLoopSource
source 0 과 source 1 두 가지 로 나 뉜 다.
  • source0: 즉, port 기반 이 아 닌 사용자 가 촉발 한 사건 이다.수 동 으로 스 레 드 를 깨 워 야 합 니 다. 현재 스 레 드 를 커 널 상태 에서 사용자 상태 로 전환 합 니 다
  • source1: port 기반, mach 포함port 와 리 셋, 시스템 포트 와 커 널 과 다른 스 레 드 를 통 해 보 내 는 메 시 지 를 감청 할 수 있 습 니 다. RunLoop 을 주동 적 으로 깨 우 고 배포 시스템 이 벤트 를 받 을 수 있 습 니 다.스 레 드 를 깨 우 는 능력 을 갖 추고 있다
  • 4、CFRunLoopTimer
    시간 에 기반 한 트리거 는 기본적으로 NSTimer 라 고 한다.미리 설 정 된 시간 에 RunLoop 을 깨 워 리 셋 을 실행 합 니 다.RunLoop 기반 이기 때문에 실시 간 으로 실행 되 지 않 습 니 다. (NSTimer 는 정확 하지 않 습 니 다. RunLoop 은 원본 메시지 만 담당 하기 때 문 입 니 다. 스 레 드 가 현재 힘 든 작업 을 처리 하고 있 으 면 Timer 가 이번 지연 되 거나 한 번 덜 실 행 될 수 있 습 니 다.)
    5、CFRunLoopObserver
    감청 아래 시점: CFRunLoopActivity
  • kCFRunLoopEntry RunLoop 시동 준비
  • kCFRunLoopBeforeTimers RunLoop 은 타이머 관련 사건 을 처리 할 것 이다
  • kCFRunLoopBeforeSources RunLoop 은 소스 사건
  • 을 처리 할 것 이다.
  • kCFRunLoopBeforeWaiting RunLoop 은 휴면 상 태 를 하고 사용자 상태 에서 커 널 상태 로 전환 할 것 이다
  • kCFRunLoopAfterWaiting RunLoop 이 깨 어 나 면 커 널 상태 에서 사용자 상태 로 전환 한 후
  • kCFRunLoopExit RunLoop 탈퇴
  • kCFRunLoopAllActivities 모든 상태 감청
  • 6. 각 데이터 구조 간 의 관계
    스 레 드 와 RunLoop 은 일일이 대응 되 고 RunLoop 과 Mode 는 한 쌍 이 많 으 며 Mode 와 source, timer, observer 도 한 쌍 이 많다.
    추천
    2019 전 사이트 iOS 면접 문제 및 답 총화!

    좋은 웹페이지 즐겨찾기