본문 바로가기
Swift

[Swift] 자료형 - class(클래스) 기본

by jw_choi 2023. 3. 5.

개요

연관된 값들과 메소드들을 캡슐화하기 위한 자료구조

구조

class SampleClass {
    // Property
    var a: Int
    
    // Method
    func show() {
        print(a)
    }
    
    // initializer
    init(a: Int) {
        self.a = a
    }
}
  1. 프로퍼티
  2. 메소드
  3. 이니셜라이저

특징

  • 클래스는 레퍼런스 타입
var s1 = SampleClass(a: 1)
var s2 = s1

s2.a = 10
print(s1.a)// 10
print(s1 === s2 ? true : false)// true

→ s1을 s2에 복사했을 때, s1와 똑같은 값을 가진 새로운 인스턴스가 생성되는게 아닌, 동일한 인스턴스를 가리키는 레퍼런스가 생성된다. (얕은 복사)

그래서 s1의 값을 변경하면 s2의 값 또한 변경된다.

 

  • 이니셜라이저를 통해 프로퍼티를 초기화 해줘야 한다.
class SampleClass {
    var a: Int
    var b: Int = 2
    var c: Int?

    init(a: Int) {
        self.a = a
    }
}

var s1 = SampleClass(a: 1)

프로퍼티 ‘a’는 기본값이 없고, ‘b’는 기본값이 있으며, ‘c’는 기본값이 없지만 optional 타입이다. 따라서 ‘a’는 인스턴스를 생성할때 항상 초기화를 해줘야한다.

'Swift' 카테고리의 다른 글

[Swift] 자료형 - Enumeration(열거형) 기본  (0) 2023.03.05
[Swift] 자료형 - tuple(튜플)  (0) 2023.03.01

댓글