0Pricing
Swift Academy · 강의

공유를 줄이는 값 타입

우발적인 공유를 피하기 위해 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. ARC 기초: strong / weak / unowned
  2. 참조 순환과 weak/unowned를 통한 해소
  3. 공유를 줄이는 값 타입
← Swift Academy(으)로 돌아가기