ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클래스와 구조체
    Swift/swift 문법 2023. 4. 22. 06:02

    클래스 -> 틀 

    객체 -> 실제 데이터  

     

    (in swift) 클래스의 인스턴스 -> 객체 

     

    인스턴스 클래스 or 구조체를 통해서 메모리에 찍어낸 것 

     

    구조체가 클래스보다 가볍다. 대다수의 경우에는 구조체를 사용하고 상속과 같은 기능이 필요할 때는 클래스를 사용한다.  

     

     

    구조체

    인스턴스의 데이터를 모두 스택에 저장한다. 

    스택: 함수가 실행될 때 사용됨

    -> 함수의 실행에 따라 생기고 지워진다. 

    값 복사

     

     

    클래스

    참조형식(: 복사 시 하나의 데이터를 가리킨다)

    인스턴스 데이터는 에 저장, 해당 힙을 가리키는 변수는 스택(메모리 주소값이 저장되어있음)에 저장

     

    찍어낸 인스턴스를 쓰려면 이름이 필요한데 그 이름이 변수에 담겨 있고,  실제적으로 그 이름은 힙의 인스턴스를 가리키고 있는 것. 

     

    [예시]

    var apple = Apple(a:3, leaves:5)

          변수       인스턴스 (클래스)

          스택                  힙

     

     

    클래스의 인스턴스가 저장될 때, 틀 원본 클래스 주소가 힙에 함께 담겨있다. 

     

     

    인스턴스 let 선언으로 생성시 클래스와 구조체의 차이

    : 클래스는 프로퍼티 생성 선언(let,var)에 따라 변경가능하지만, 구조체는 변경 불가하다. 

     

    클래스 인스턴스 생성에서 let의 의미: 스택에서 클래스가 가리키고 있는 주소이 변경될 수 없음을 의미  

    구조체 인스턴스 생성에서 let의 의미: 스택에서 생성된 인스턴스 자체를 의미 

     

     

    점문법/ 명시적 멤버 표현식의 의미 

    : 내부의 요소, 클래스, 구조체의 인스턴스의 멤버에 접근한다. 멤버는 속성, 메서드를 포함 

     

     

     

     

     

     

    'Swift > swift 문법' 카테고리의 다른 글

    스위프트의 메모리 관리 모델  (0) 2023.04.24
    프로토콜  (0) 2023.04.24
    메모리 안전  (0) 2023.04.21
    클로저 (1급 객체)  (0) 2023.04.18
    리턴형이 never 타입인 함수  (0) 2023.04.16
Designed by Tistory.