공유를 줄이는 값 타입
우발적인 공유를 피하기 위해 value types 를 우선 사용합니다. 구조체와 열거형은 할당 시 복사되어 격리, 예측 가능성, 스레드 안전성을 높입니다.
공유를 줄이는 값 타입은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 3개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
값 타입을 사용하는 이유
Swift의 구조체와 열거형은 값 타입입니다. 할당하거나 전달할 때 복사본이 생성됩니다. 따라서 실수로 공유되는 일이 줄어들고 상태를 더 쉽게 추적할 수 있습니다.
참조 공유(클래스)
클래스는 참조 타입입니다. 여러 변수가 동일한 인스턴스를 가리킬 수 있으므로, 한 별칭에서의 변경이 다른 별칭에도 영향을 줍니다.
final class Bag {
var items: [String]
init(_ items: [String]) { self.items = items }
}
let a = Bag(["pen"])
let b = a // REF COPY: a and b refer to the same object
b.items.append("book")
print(a.items) // ["pen","book"] — mutated via b
print(b.items)독립적인 복사본(구조체)
구조체는 할당할 때 복사됩니다. 각 변수가 자신의 데이터를 소유하므로 변경 사항이 해당 변수에만 적용됩니다.
struct Point { var x: Int; var y: Int }
var p1 = Point(x: 1, y: 2)
var p2 = p1 // VALUE COPY: independent
p2.x = 99
print(p1.x, p2.x) // 1, 99 — p1 unaffected쓰기 시 복사 컬렉션
배열/사전/집합은 쓰기 시 복사를 사용하는 값 타입입니다. 배열이 여러 곳에서 참조된 상태로 변경되면 Swift가 새 복사본을 만듭니다.
var a1 = [1,2,3]
var a2 = a1 // copy-on-write handle
a2.append(4) // triggers copy if a1 is uniquely referenced
print(a1) // [1,2,3]
print(a2) // [1,2,3,4]순수한 방식의 업데이트
순수에 가까운 API를 설계하십시오. 값을 받아 새로운 값을 반환하면 호출자가 예기치 않은 공유 변경을 피할 수 있습니다.
struct Profile {
var name: String
var tags: [String]
}
func addTag(_ p: Profile, _ tag: String) -> Profile {
var copy = p // work on a value copy
copy.tags.append(tag) // caller gets a new updated value
return copy
}
let pA = Profile(name: "Ana", tags: [])
let pB = addTag(pA, "swift")
print(pA.tags) // []
print(pB.tags) // ["swift"]현명한 선택
지침:
- 작고 변경할 수 없거나 로컬에서만 변경되는 데이터에는 구조체를 우선 사용합니다.
- 식별성, 공유되는 변경 가능 상태 또는 상속이 필요할 때는 클래스를 사용합니다.
- 값 타입은 공유를 줄여 동시성 코드를 더 안전하게 추론할 수 있게 합니다.
값 타입과 참조 공유
빠른 확인: 값 타입은 의도하지 않은 공유를 피하는 데 어떻게 도움이 됩니까?
복습
복습: 구조체와 열거형은 값입니다. 공유되는 변경 가능 상태를 최소화하려면 이를 사용합니다. 컬렉션은 쓰기 시 복사를 사용하므로 변경이 다른 보유자에게 예기치 않게 영향을 주지 않습니다.
자주 묻는 질문
“공유를 줄이는 값 타입” 강의는 무료인가요?
네 — “공유를 줄이는 값 타입” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
“공유를 줄이는 값 타입”에서 뭘 배우나요?
우발적인 공유를 피하기 위해 value types 를 우선 사용합니다. 구조체와 열거형은 할당 시 복사되어 격리, 예측 가능성, 스레드 안전성을 높입니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 3번째 강의입니다.
“공유를 줄이는 값 타입” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.