• Home
  • About
    • 밤에 쓴 코드 photo

      밤에 쓴 코드

      부엉이의 개발 노트

    • Learn More
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

Swift 1

08 Apr 2019

Reading time ~1 minute

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 는 정의가 되고 , 수정이 될 수 있다는 것을 프로그램에 명시해 두기에 , 프로그램은 그에 따른 신경을 써야한다. 그에 따른 비용이 발생하기에 , 꼭 필요한 경우에만 사용하는 것이 좋다.


Share Tweet +1