스위프트에서는 구조체와 클래스의 모습, 문법이 거의 흡사

 

1. 다만 구조체의 인스턴스는 값 타입, 클래스의 인스턴스는 참조 타입 !!

 

2. 값 타입의 데이터를 함수의 전달인자로 전달하면 메모리에 전달인자를  위한 인스턴스가 새로 생성 

     반면 참조 타입의 데이터를 전달인자로 전달할 때 기존 인스턴스의 참조를 전달하므로 새로운 인스턴스가 아닌 기존의 인스턴스 참       조를 전달.

     

3. 스위프트의 기본 데이터 타입은 모두 구조체

public struct String  {

      /// An empty 'String'     

      public init()

}

 

(Bool, Int, Array, Dictionary, Set 등등)  String 타입과 마찬가지로 모두 구조체로 구현되어 있음

 

 

4. 구조체와 클래스 선택해서 사용하기

     

    애플은 가이드라인 에서 다음 조건 중 하나 이상에 해당한다면 구조체를 사용하는 것을 권장

 

  • 연관된 간단한 값의 집합을 캡슐화하는 것만이 목적일 때     
  • 캡슐화한 값을 참조하는 것보다 복사하는 것이 합당할 때
  • 구조체에 저장된 프로퍼티가 값 타입이며 참조하는 것보다 복사하는 것이 합당할 때
  • 다른 타입으로부터 상속받거나 자신을 상속할 필요가 없을 때

 

 

 

'swift > 잡다함' 카테고리의 다른 글

extension, protocol, Higher_Order_Func  (0) 2021.06.16
기본 클로저 사용  (0) 2021.06.07
ARC (weak, unowned)  (0) 2021.06.01
mutating  (0) 2021.02.17
lazy  (0) 2021.02.17

+ Recent posts