밤에 쓴 코드

Swift) 구조체/변수/상수 본문

Swift

Swift) 구조체/변수/상수

붱이🦉 2019. 4. 8. 21:31

Struct : 구조체

struct Cat{

    // 속성
    let name : String
    var age : UInt

    // 실체화
    init(name:String , age:UInt = 1){
        self.name = name
    }

    // 동작
    func howl(){
        print(name+" 야옹")
    }

}
  • 객체를 만들기위해 추상화되어있는 점에서 class와 유사합니다.
  • 유사한 두개가 존재한다는 것은 유사하지만 차이가 있고 , 각기 다른 목적으로 설계 되었다는 것을 의미합니다.

특징적인 차이

  • class에서는 가능하지만struct에서는 가능하지 않은 것

           상속
           타입캐스팅
           참조에 의한 전달

stack

  • CPU가 스택 메모리를 효율적으로 구성하기 때문에 스택 변수를 읽고 쓰는 속도가 매우 빠릅니다.
  • 스택에 저장할 수있는 변수의 크기에 제한
  • 스택을 이해하는 핵심 은 함수가 종료 되면 모든 변수가 스택에서 팝 아웃된다는 것입니다.
  • 스택 변수는 생성 된 함수가 실행되는 동안에 만 존재합니다.

heap

  • 자동으로 관리되지 않고 CPU가 엄격하게 관리하지 않는 컴퓨터 메모리 영역
  • 힙 메모리는 포인터 를 사용 하여 힙의 메모리에 액세스 해야하기 때문에 읽기와 쓰기가 약간 느립니다

struct 는 지역변수/매겨변수에 해당된다. - 자체가 값을 가지는 형태이므로 stack 영역에 저장이 된다.

class인스턴스의 참조변수stack 영역에 저장이 되나 , 실제 인스턴스heap 영역에 저장이 된다,


let 과 var

let ,var

  • 사용할 데이터를 메모리에 저장하고 나면 , 그 저장한 메모리주소를 저장하고 계속적으로 접근을 해야한다.
  • 메모리주소를 개발자가 항상 기억할 수 없으므로 변수에 저장하고 사용한다.

  • 쓰임새는 비슷하나 차이가 있다.
  • var 는 정의가 되고 , 수정이 될 수 있다는 것을 프로그램에 명시해 두기에 , 프로그램은 그에 따른 신경을 써야한다. 그에 따른 비용이 발생하기에 , 꼭 필요한 경우에만 사용하는 것이 좋다.

'Swift' 카테고리의 다른 글

Swift) POP - Protocol Oriented Programming  (1) 2019.04.25
Swift) Extension - 익스텐션  (0) 2019.04.25
Swift) 옵셔널 - Optional  (0) 2019.04.18
Swift) 프로토콜 - Protocol  (0) 2019.04.11
Swift) 열거형 - Enumeration  (0) 2019.04.05
Comments