iOS Runloop 면접 문제 (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 을 주동 적 으로 깨 우 고 배포 시스템 이 벤트 를 받 을 수 있 습 니 다.스 레 드 를 깨 우 는 능력 을 갖 추고 있다 시간 에 기반 한 트리거 는 기본적으로 NSTimer 라 고 한다.미리 설 정 된 시간 에 RunLoop 을 깨 워 리 셋 을 실행 합 니 다.RunLoop 기반 이기 때문에 실시 간 으로 실행 되 지 않 습 니 다. (NSTimer 는 정확 하지 않 습 니 다. RunLoop 은 원본 메시지 만 담당 하기 때 문 입 니 다. 스 레 드 가 현재 힘 든 작업 을 처리 하고 있 으 면 Timer 가 이번 지연 되 거나 한 번 덜 실 행 될 수 있 습 니 다.)
5、CFRunLoopObserver
감청 아래 시점:
CFRunLoopActivity
kCFRunLoopEntry
RunLoop 시동 준비 kCFRunLoopBeforeTimers
RunLoop 은 타이머 관련 사건 을 처리 할 것 이다 kCFRunLoopBeforeSources
RunLoop 은 소스 사건 kCFRunLoopBeforeWaiting
RunLoop 은 휴면 상 태 를 하고 사용자 상태 에서 커 널 상태 로 전환 할 것 이다 kCFRunLoopAfterWaiting
RunLoop 이 깨 어 나 면 커 널 상태 에서 사용자 상태 로 전환 한 후 kCFRunLoopExit
RunLoop 탈퇴 kCFRunLoopAllActivities
모든 상태 감청 스 레 드 와 RunLoop 은 일일이 대응 되 고 RunLoop 과 Mode 는 한 쌍 이 많 으 며 Mode 와 source, timer, observer 도 한 쌍 이 많다.
추천
2019 전 사이트 iOS 면접 문제 및 답 총화!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.