Swift 6.2는 모듈이나 대상의 기본 액터 격리를 설정하는 방식을 제공합니다. UI 중심 코드에서는 MainActor를 기본으로 삼아 접근 경계를 코드 전반에 일관되게 적용할 수 있습니다.
모든 일을 메인 액터에 두면 무거운 계산도 그 경로에 묶일 수 있습니다. 병렬 실행이 필요한 코드는 격리 경계를 명시하고 공유 데이터를 안전하게 넘겨야 합니다.
언제 쓰나
UI 상태가 많은 Swift 프로젝트에서 기본 격리 정책을 정할 때 씁니다.
기본 격리 범위를 설정해 UI 상태 접근을 한 액터에 묶습니다.
<div class="v"><header><b>ACTOR ISOLATION</b><span id="state"></span></header><main><div class="lanes"><div class="lane" id="mainlane"></div><div class="lane" id="otherlane"></div></div></main><footer>state belongs to one isolation domain</footer></div>.v{width:min(92vw,660px);height:min(86vh,310px);box-sizing:border-box;padding:clamp(9px,2.5vmin,18px);border:1px solid var(--line);border-radius:14px;background:var(--surface);display:flex;flex-direction:column;gap:7px;color:var(--fg);font:500 clamp(15px,3.2vmin,17px)/1.25 var(--font-sans, sans-serif)}.v header,.v footer{display:flex;justify-content:space-between;align-items:center;gap:8px;white-space:nowrap}.v header b{color:var(--accent);font-size:.9em}.v header span,.v footer{color:var(--muted);font-size:.82em}.v main{flex:1;min-height:0;position:relative;overflow:hidden}.v .mono{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.v .active{background:var(--accent)!important;color:var(--bg)!important;border-color:var(--accent)!important}.v .muted{opacity:.28} .lanes{height:100%;display:flex;flex-direction:column;justify-content:center;gap:9px}.lane{height:36%;border:1px solid var(--line);border-radius:6px;display:flex;align-items:center;justify-content:space-around;font:600 .8em ui-monospace,monospace}.lane b{padding:6px;border-radius:4px}.lane.warning{border-color:var(--accent-2)}let n=0;function draw(){document.getElementById("mainlane").innerHTML="<b>MAIN ACTOR</b><b class=active>UI state</b>";document.getElementById("otherlane").innerHTML=n?"<b>BACKGROUND</b><b>crossing requires hop</b>":"<b>BACKGROUND</b><b>independent work</b>";document.getElementById("otherlane").classList.toggle("warning",!!n);document.getElementById("state").textContent=n?"isolated access":"safe lane";n=1-n}draw();setInterval(draw,1300)Swift 6.2는 모듈이나 대상의 기본 액터 격리를 설정하는 방식을 제공합니다. UI 중심 코드에서는 MainActor를 기본으로 삼아 접근 경계를 코드 전반에 일관되게 적용할 수 있습니다.
모든 일을 메인 액터에 두면 무거운 계산도 그 경로에 묶일 수 있습니다. 병렬 실행이 필요한 코드는 격리 경계를 명시하고 공유 데이터를 안전하게 넘겨야 합니다.
UI 상태가 많은 Swift 프로젝트에서 기본 격리 정책을 정할 때 씁니다.