ukSeung iOS

[Swift] 구조체와 클래스 차이 (Difference between struct and class) 본문

iOS/Swift

[Swift] 구조체와 클래스 차이 (Difference between struct and class)

욱승 2022. 8. 29. 11:13

안녕하세요 욱승입니다.

오늘은 구조체와 클래스차이에 대해 알아보겠습니다.

 

요약

struct

- 복사 개념

- 참조하는 값이 바꿔도 기존 값에는 영향이 없음

class

- 공유 개념

- 참조하는 값이 바뀌면 기존 값도 영향을 받아 바뀜

 

 

class와 struct의 공통점

  • 값을 저장하기 위한 프로퍼티를 정의할 수 있음
  • 기능을 제공하기 위해 메소드를 정의할 수 있음
  • subscript 문법을 이용해 특정 값에 접근할  수 있음
  • 생성자를 사용해 초기 상태를 설정할 수 있음
  • 기본 구현에서 기능을 확장할 수 있음
  • Protocol을 채택하여 기능을 설정할 수있음

 

class(클래스)

  • 참조 타입
  • ARC로 메모리 관리
  • 같은 클래스 인스턴스를 여러 개 변수에 할당한 뒤 값을 변경시키면 할당한 모든 변수에 영향을 줌
  • 상속 가능
  • 타입 캐스팅을 통해 런타임에서 클래스 인스턴스의 타입을 확인 가능
  • deinit을 이용해 클래스 인스턴스의 메모리 할당을 해제할 수 있음

struct(구조체)

  • 값 타입
  • 구조체 변수를 새로운 변수에 할당할 때마다 새로운 구조체가 할당
  • 값을 변경시키더라도 다른 변수에 영향을 주지 않음

 

 

 

글로는 이해가 잘 안되실탠데요 예시보시겠슴다.

 

struct myInfo {
    var name : String
    var age : Int
    var graduate : Bool
}

var ukseung = myInfo(name: "승욱", age: 27, graduate: false)
var ukseungClone = ukseung

print("이름 : \(ukseung.name)") // 이름 : 승욱
print("나이 : \(ukseung.age)") // 나이 : 27
print("졸업유무 : \(ukseung.graduate)") // 졸업유무 : false

ukseungClone.age = 20

print("이름 : \(ukseung.name)") // 이름 : 승욱
print("나이 : \(ukseung.age)") // 나이 : 27
print("졸업유무 : \(ukseung.graduate)") // 졸업유무 : false

Struct

ukseung인스턴스의 age값은 그대로 인것을 확인할수 있다.

근데.. 나이는 왜이렇게 빨리먹을까요(마음만은 20살)

 

반면 클래스는

class myInfo {
    var name : String
    var age : Int
    var graduate : Bool
    
    init(_ name: String, _ age: Int, _ graduate: Bool){
        self.name = name
        self.age = age
        self.graduate = graduate
    }
    
}

var ukseung = myInfo("승욱", 27, false)
var ukseungClone = ukseung

print("이름 : \(ukseung.name)") // 이름 : 승욱
print("나이 : \(ukseung.age)") // 나이 : 27
print("졸업유무 : \(ukseung.graduate)") // 졸업유무 : false

ukseungClone.age = 20

print("이름 : \(ukseung.name)") // 이름 : 승욱
print("나이 : \(ukseung.age)") // 나이 : 20
print("졸업유무 : \(ukseung.graduate)") // 졸업유무 : false

차이점이 보이시나요

Class는 공유개념, Struct는 복사개념!!

 

 

 

클..라..쓰는 공유개념..

스트..럭쓰는 복사개념..

메모... 

 

 

+이거쓰고 커피마시러 갔는데 알고리즘 무엇..?

 

 

Reference

https://declan.tistory.com/9

 

 

728x90
반응형