본문 바로가기
Swift

[Swift] 구조체와 클래스

by Sky Titan 2020. 12. 28.
728x90
스위프트 프로그래밍
국내도서
저자 : 야곰
출판 : 한빛미디어 2019.10.01
상세보기

구조체

  • 클래스와 마찬가지로 새로운 타입을 정의해주는 역할을 한다.
  • '값 타입 (value Type)'
    • 인스턴스를 let으로 선언하면 프로퍼티 값 변경 불가
    • Int, String, Double, Array 등 Swift의 기본 데이터 타입은 모두 구조체
  • 데이터를 홀드하는 용도로 많이 사용한다.
  • 프로퍼티 이름에 맞추어서 자동으로 이니셜라이저가 생성된다.
import Foundation

struct Person {
    var name : String
    var age : Int
}

let p1 = Person(name : "park", age : 15)

print(p1)

/* 결과
Person(name: "park", age: 15)
*/

 

클래스

  • 새로운 사용자 정의 데이터 타입을 만들어 준다.
  • '참조 타입 (reference Type)'
    • 인스턴스를 let으로 선언해도 참조 타입이기에 내부 프로퍼티 값 변경 가능
  • 프로퍼티 기본 값을 지정해주거나, 이니셜라이저에서 초기화를 진행해주어야 한다.
  • deinit : 인스턴스가 메모리에서 해제될 때 호출되는 메서드
import Foundation

class Person {
    var name : String
    var age : Int

    init(name : String, age : Int) {
        self.name = name
        self.age = age

        print("\(name) 생성")
    }

    deinit {
        print("\(name) 삭제")
    }
    
}

var p1 = Person(name : "park", age : 15)
p1 = Person(name : "kim", age : 15)

/* 결과
park 생성
kim 생성
park 삭제
*/

 

구조체 vs 클래스

  구조체 클래스
상속 X O
타입캐스팅 X O
deinitializer X O
참조 횟수 계산 X O
728x90

'Swift' 카테고리의 다른 글

[Swift] 접근제어 (Access Control)  (0) 2021.01.17
[Swift] 프로토콜 (Protocol)  (0) 2021.01.02
[Swift] 범위 연산자  (0) 2020.12.28
[Swift] 타입캐스팅 (Type casting)  (0) 2020.12.28
[Swift] 메서드 (Method)  (0) 2020.12.26

댓글