정적 격리 (Static Isolation)
컴파일 타임 안전 규칙 강제
`@MainActor` 속성을 보고 컴파일러가 위반 코드를 빌드 시점에 적발한다.
Xcode 빌드 검증 전
👤 프로필 화면 갱신 성공
> 분석 준비 완료.
🛡️ 정적 격리 강제 안전성 확인:
컴파일러가 동기 호출 라인을 에러로 정확히 차단했습니다. 가이드에 따라 개발자가 동기 클로저 내부를 비동기 컨텍스트인 'Task { @MainActor in ... }' 구문으로 안전하게 래핑 및 격리하여 빌드를 성공시켰습니다.
동적 격리 (Dynamic Isolation)
런타임 개발자 명시적 보증
`assumeIsolated`로 컴파일 검사를 생략시킨다. 검증 실패 시 앱은 즉사한다.
@MainActor func updateProfileUI() { ... }
NotificationCenter.default.addObserver(self) { _ in
MainActor.assumeIsolated {
self.updateProfileUI()
}
}
가상 유저 기기 대기 중
📱 앱 정상 구동 중
> 레거시 우회 코드 분석 대기 중.
💥 동적 격리 오류, 유저 기기 폭발!
컴파일러는 개발자의 보증을 믿고 통과시켰으나, 알림 노티가 백그라운드 스레드에서 터지자 `assumeIsolated` 계약이 즉시 파기되며 앱 프로세스가 런타임에 강제 종료되었습니다.